使用SQLite和C#"锁定数据库"

Bla*_*pha 2 c# database sqlite locked

我的代码有问题.我想删除我的SQLite数据库中的一些行,但我得到一个"数据库已锁定"异常.我读过几篇关于这篇文章的帖子,但我的问题仍然存在.

这是我的代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

我在线上获得了"数据库锁定"异常cmdUpdate.ExecuteNonQuery();.我尝试使用DELETE FROM相同的结果替换,但是使用a SELECT,它可以工作,我真的不明白我的代码有什么问题.

谢谢你的帮助.

Bla*_*pha 5

大家好,谢谢你的帮助.在插入/更新之前,我只需要在其他函数中使用.dispose()两个读者,它就可以了!

  • 天哪,感谢您的注意,我花了2个小时试图弄清楚为什么我的数据库有时会被锁定,这是因为我不小心删除了reader.close()!通常,当我忘记关闭阅读器时,应用程序会抛出错误,表明阅读器仍处于打开状态,但这次不这样做,因为阅读器位于另一个函数中 (2认同)