В настоящее время я пишу код, используя C # и SQLite. Возникает ошибка, сообщающая, что база данных дважды блокируется в окне сообщения.
Запрос работает в браузере БД SQLite, однако, когда он помещается в код C #, он выдает ошибку.
Вот код, который дает мне ошибку:
cmd.CommandText = "UPDATE customers SET Bill = Bill - "+textBox2.Text+" WHERE customers.CustomerID = " + textBox1.Text + ";";
Кажется, есть проблема со знаком равенства, может быть что-то не так с арифметическим процессом.
Полный код:
SQLiteConnection myconn = new SQLiteConnection(@"Data Source = C:\Users\chick\Newspaper.db");
SQLiteCommand cmd = myconn.CreateCommand();
cmd.CommandText = "UPDATE customers SET Bill = (Bill - "+textBox2.Text+") WHERE customers.CustomerID = " + textBox1.Text + ";";
myconn.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Succesfully Update");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
UPDATE:
Изменен формат на using() {}
, но он все еще не работает. Сбой программы
Новый код:
using (SQLiteConnection myconn = new SQLiteConnection(@"Data Source = C:\Users\chick\Newspaper.db"))
{
var sql = "Update customers SET Bill = Bill - @pay WHERE customers.CustomerID = @cid;";
myconn.Open();
using (var cmd = new SQLiteCommand(sql, myconn))
{
cmd.Parameters.AddWithValue("@cid", textBox1.Text);
cmd.Parameters.AddWithValue("@pay", textBox2.Text);
cmd.ExecuteNonQuery();
}
}