奇怪的SQLite行为 - '数据库有时被锁定',但有时不会

时间:2013-03-13 19:19:40

标签: .net database sqlite system.data.sqlite

我使用SQLite(通过.NET的包装System.Data.SQLite)作为我的应用程序的数据库很长一段时间,一切都很好。最近我开始得到一个数据库被锁定了#39;我的DAL具有很少的功能,每个功能都是读写,并在using块中使用新创建的连接。当我运行我的测试时,错误发生在第二次调用其中一个函数。但是当我调试并逐行移动时,它没问题。我的应用程序是单线程的 有人有想法吗?
非常感谢。

2 个答案:

答案 0 :(得分:0)

您是否同时运行SQLite控制台或SqliteAnalylitics exes?

答案 1 :(得分:0)

似乎很多人遇到了这个问题但无法解决,所以我会写出解决方案。在System.Data.SQLite中,从版本1.0.45.0开始,关闭连接不会自动关闭任何相关的DbCommandDbDataReader对象。必须明确关闭它们。因此,连接并非真正关闭,以允许这些对象工作,但只是在排出所有相关对象后排队等待关闭。见this
在以前的版本中,它的行为符合预期,关闭连接实际上会关闭它! 解决方案:完成所有DbCommandDbDataReader时请完全处理它们,就像使用DbConnection本身一样。