Базы данных C # SQLite Ошибка заблокированной базы данных - PullRequest
0 голосов
/ 09 мая 2018

В настоящее время я пишу код, используя 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();
            }
        }

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Спасибо всем, кто ответил. Мы поняли, что проблема заключалась в том, что мы никогда не закрывали читателя в предыдущем коде.

0 голосов
/ 10 мая 2018

Проблема в том, что какая-то другая часть программы (или другая программа) все еще имеет активную транзакцию.

Необходимо правильно очистить все команды, которые обращаются к базе данных, т. Е. Везде использовать using.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...