c# - "Database is locked"SQLite 和 C#

标签 c# database sqlite locked

我的代码有问题。 我想删除 SQLite 数据库中的一些行,但出现“数据库已锁定”异常。 我读了几篇关于这方面的文章,比如 this post , 但我的问题仍然存在。

这是我的代码:

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 时,它起作用了,我真的不明白我的代码有什么问题。

感谢您的帮助。

最佳答案

好的,谢谢大家的帮助。 我只需要在插入/更新之前在另一个函数中 .dispose() 两个读者,它就可以工作!

关于c# - "Database is locked"SQLite 和 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210854/

相关文章:

database - 使用 Delphi 进行数据库开发的最佳实践是什么?

mysql - 数据库连接-数据库设计-父级-子级-子级的子级

c# - log4net 一般故障。无法获取文件锁定

c# - MySql HasRows 总是返回 true

mysql - 如何使时间戳不显示时间

java - 我应该在哪里/什么时候创建一个表作为我的程序的基础?

c++ - 尝试获取 QSqlQuery 的值时出现编译错误?

android - SQLite (1) 靠近 "M": syntaxs error

c# - 如何在 C# 中的一行中编写 bool 函数?

c# - 什么时候不使用通用集合?