SQLite仅在执行SQLiteCommand ExecuteReader()方法后才引发错误

时间:2018-11-01 20:37:07

标签: c# .net sqlite windows-ce

我有一个问题,每次关闭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平台上

0 个答案:

没有答案
相关问题