我System.Data.SQLite
长期使用 SQLite(通过 .NET 的 wrapper)作为我的应用程序的数据库,一切正常。最近我开始收到“数据库已锁定”。我的 DAL 的功能很少,每个功能都可以读取和写入,并使用using
块内新创建的连接。当我运行测试时,错误发生在第二次调用其中一个函数时。但是当我逐行调试和移动时,没关系。我的应用程序是单线程的。
有人有想法吗?
非常感谢。
问问题
260 次
2 回答
0
您是否同时运行 SQLite 控制台或 SqliteAnalylitics exe?
于 2013-03-13T19:48:16.580 回答
0
好像很多人遇到这个问题都解决不了,我就写一下解决办法。从System.Data.SQLite
1.0.45.0 版本开始,关闭连接不会自动关闭任何相关DbCommand
或DbDataReader
对象。它们必须明确关闭。因此,连接并没有真正关闭,以允许这些对象工作,而只是在所有相关对象被释放后排队等待关闭。看到这个。
在以前的版本中,它的行为与预期一样,关闭连接实际上会关闭它!
解决方案:当你完成它们时DbCommand
,DbDataReader
明确地处理它们,就像你处理DbConnection
它自己一样。
于 2013-03-14T01:55:40.427 回答