Проверьте следующий пример
string cs = @"URI=file:C:\somefile.db";
using(con = new SQLiteConnection(cs)) {
con.Open();
string stm = "SELECT * FROM tTable";
using(cmd = new SQLiteCommand(stm, con)) {
using(SQLiteDataReader rdr = cmd.ExecuteReader()) {
while (rdr.Read())
{
// Write the first one
Console.WriteLine($"{rdr.GetInt32(0)}");
}
}
}
}
Используя ключевое слово using
, мы гарантируем, что выполняются все функции очистки (не только близкие).
Используя using
ключевое слово, мы гарантируем, что мы очищаем ресурсы в правильном порядке. В вашем случае вы сначала закрываете соединение, а затем читаете. В приведенном выше примере происходит обратное.
Вы также должны создавать новое соединение каждый раз, когда выполняете запрос. Не беспокойтесь, это не влияет на производительность, это так, как и должно быть (для получения дополнительной информации проверьте пул соединений).
Прекратите использовать глобальную переменную соединения и просто используйте new
Keyword