Использование c# и sqlite
Я пытаюсь обновить текстовое поле EduInstitCoutnrytxt1, когда я нажимаю на сетку данных, изменяю значение и затем нажимаю кнопку обновления. Мне было рекомендовано использовать запрос на обновление ниже, но при его запуске я получаю ошибку «SQL logi c error near« then »: синтаксическая ошибка». Довольно чертовски расплывчато.
private void Editbutton_Click(object sender, EventArgs e) //edits by name so cant change name
{
string txtQuery21 = "update EducationProfile set P3InstituteCountry = (case EpID when " + EduInstitCountrytxt1.Tag + " then '" + EduInstitCountrytxt1.Text + "' when " + EduInstitCountrytxt2.Tag + " then '" + EduInstitCountrytxt2.Text + "' when " + EduInstitCountrytxt3.Tag + " then '" + EduInstitCountrytxt3.Text + "' when " + EduInstitCountrytxt4.Tag + " then '" + EduInstitCountrytxt4.Text + "' end) ";
ExecuteQuery(txtQuery21);
Затем я обнаружил, что, возможно, тег является нулевым, что может вызвать появление этой ошибки. Поэтому я установил теги в событии dgv click пустыми вместо нуля, поэтому по умолчанию он должен быть пустым.
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
EduInstitCountrytxt1.Tag = "";
EduInstitCountrytxt2.Tag = "";
EduInstitCountrytxt3.Tag = "";
EduInstitCountrytxt4.Tag = "";
...
string CommandTextedu = "select ep.P3ID, ep.P3InstituteCountry, ep.P3From, ep.P3To, ep.P3Qualifications, ep.P3FTPT, ep.EPID from JADB A left join EducationProfile ep on a.P1ID = ep.P3ID where a.P1ID = " + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
DBedu = new SQLiteDataAdapter(CommandTextedu, sql_con);
DTedu.Clear();
DBedu.Fill(DTedu);
int j = 1;
foreach (DataRow dr in DTedu.Rows)
{
switch (j)
{
case 1:
EduInstitCountrytxt1.Tag = dr[6].ToString();
EduFromProfdateTimePicker1.Tag = dr[6].ToString();
EduToProfdateTimePicker1.Tag = dr[6].ToString();
EduQualificationstxt1.Tag = dr[6].ToString();
EduFTPTProfCB1.Tag = dr[6].ToString();
EduInstitCountrytxt1.Text = dr[1].ToString();
EduFromProfdateTimePicker1.Text = dr[2].ToString();
EduToProfdateTimePicker1.Text = dr[3].ToString();
EduQualificationstxt1.Text = dr[4].ToString();
EduFTPTProfCB1.Text = dr[5].ToString();
break;
//more cases
}
j++;
}
Но все равно появляется та же ошибка. Я попытался проверить, был ли EduInstitCountrytxt1.Tag нулевым, и, с помощью окна сообщений, EduInstitCountrytxt1.Tag был нулевым, прежде чем я нажал на dgv, но имел значение после того, как я нажал на dgv, как я и предполагал, он должен работать. Я что-то упускаю?