我有一个问题,每次关闭SQLiteConnection对象都会引发以下错误。
...
...
using (SQLiteConnection conn = new SQLiteConnection(@"Data source=/Database.db;Version=3;"))
{
using (SQLiteCommand command = new SQLiteCommand(conn))
{
conn.Open();
command.CommandText = "PRAGMA busy_timeout=5000;";
command.ExecuteNonQuery();
command.CommandText = query;
using (SQLiteDataReader reader = command.ExecuteReader())
{
table.Load(reader);
}
}
}
...
...
在using()块中关闭conn对象时,它总是会抛出此错误:
“ SQLite错误(2058):os_win.c:42822(0)winUnlockReadLock(Database.db)-操作成功完成。”
现在,此错误仅来自我正在使用的调试端口。它不会在调试模式下停止或引发异常,而是继续运行。
但是,此错误仅在使用command.ExecuteReader()时发生。如果我只是打开和关闭连接和命令,就可以了,并且不会返回错误。
数据库处于WAL模式,但添加了'PRAGMA journal_mode = WAL;'到连接字符串没有做任何事情。
同时,我有一个C代码项目,该项目使用相同的WAL数据库,并且永远不会出现此错误。
System.Data.Sqlite包中是否缺少任何内容?也许可以通过某种方式告诉它它正在使用WAL数据库或其他东西?使用这些类的相似示例看起来与我的相似。
我在这里使用sqlite3.dll 3.24.0版本及其等效包装器(顶部链接):winCE .net Wrapper这一切都在winCE 2013平台上