gpt4 book ai didi

c# - sqlite 数据库在插入时被锁定

转载 作者:行者123 更新时间:2023-11-30 17:00:12 25 4
gpt4 key购买 nike

有一个简单的代码

var insert = 
@"INSERT INTO [files] (
[Name],
[FullName],
[MD5])
VALUES (@Name, @FullName, @MD5);";
using (var con = _db.OpenConnection())
{
using (var cmd = con.CreateCommand())
{
cmd.CommandText = insert;
cmd.Parameters.AddWithValue("@Name", item.Name);
cmd.Parameters.AddWithValue("@FullName", item.FullName);
cmd.Parameters.AddWithValue("@MD5", item.MD5);
cmd.ExecuteNonQuery();
}
}

应用程序在执行时挂起一段时间

cmd.ExecuteNonQuery();

然后失败并出现异常“数据库已锁定”。为什么会这样?应用程序不是多线程的。 DB 文件刚刚创建。

最佳答案

问题解决了。在这段代码之前调用了 SqlCommand.ExecuteReader()。尽管创建此阅读器的连接和命令已被释放,但此阅读器本身并未被释放。使用“using(reader)”修复后连接正确关闭并且上述错误消失。

总的来说:即使显式处理了连接和 SqlCommand,DataReader 仍然可以保持连接。

关于c# - sqlite 数据库在插入时被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22612790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com