我使用SQLite(通过.NET的包装System.Data.SQLite
)作为我的应用程序的数据库很长一段时间,一切都很好。最近我开始得到一个数据库被锁定了#39;我的DAL具有很少的功能,每个功能都是读写,并在using
块中使用新创建的连接。当我运行我的测试时,错误发生在第二次调用其中一个函数。但是当我调试并逐行移动时,它没问题。我的应用程序是单线程的
有人有想法吗?
非常感谢。
答案 0 :(得分:0)
您是否同时运行SQLite控制台或SqliteAnalylitics exes?
答案 1 :(得分:0)
似乎很多人遇到了这个问题但无法解决,所以我会写出解决方案。在System.Data.SQLite
中,从版本1.0.45.0开始,关闭连接不会自动关闭任何相关的DbCommand
或DbDataReader
对象。必须明确关闭它们。因此,连接并非真正关闭,以允许这些对象工作,但只是在排出所有相关对象后排队等待关闭。见this。
在以前的版本中,它的行为符合预期,关闭连接实际上会关闭它!
解决方案:完成所有DbCommand
和DbDataReader
时请完全处理它们,就像使用DbConnection
本身一样。