我的代碼有問題。 我想刪除我的SQLite數據庫中的一些行,但我得到一個「數據庫被鎖定」異常。 我讀了幾篇文章,比如this post,但我的問題仍然存在。用SQLite和C「數據庫被鎖定」#
這裏是我的代碼:
using (var c = new SQLiteConnection(_connectionSQLite))
{
c.Open();
if (c.State == ConnectionState.Open)
{
var reqExist = string.Concat("SELECT id FROM ... ");
using (var cmdExist = new SQLiteCommand(reqExist, c))
{
var reqUpdate = string.Concat("UPDATE ... WHERE id = ", cmdExist.ExecuteScalar());
using (var cmdUpdate = new SQLiteCommand(reqUpdate, c))
{
cmdUpdate.ExecuteNonQuery();
}
}
}
c.Close();
}
我得到的「數據庫被鎖定」異常就行了cmdUpdate.ExecuteNonQuery();
。我試着用DELETE FROM
替代,結果相同,但是用SELECT
,它工作正常,我真的不明白我的代碼有什麼問題。
感謝您的任何幫助。
@AbhilashRVankayala - 這是可怕的建議。嵌套使用語句沒有任何問題,並且這種語句(或者equiv try-finally)對於確保恰當的資源處置是必要的 - 這是他們問題的一個原因。 – antiduh
你是否同時打開多個連接到同一個數據庫? –
如果ExecuteScalar沒有找到任何id,會發生令人討厭的事情。這似乎是一個聰明的想法,以concat ExecuteScalar的回報,但......。 – Steve