0

我正在尝试关闭当前的 SQLite 连接并重新打开一个新连接。但有时,它实际上是相同的(数据库名称基于我登录后的用户 ID)。

这失败了,但有以下例外:

SQLite.SQLiteException occurred
  _HResult=-2146233088
  _message=Could not open database file: one.sql (CannotOpen)
  HResult=-2146233088
  Message=Could not open database file: one.sql (CannotOpen)
  Source=Cirrious.MvvmCross.Plugins.Sqlite.WindowsPhone
  StackTrace:
       at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
  InnerException: 

为了测试,我修改了 N-10-KittensDb,代码如下:

public DataService(ISQLiteConnectionFactory factory)
{
    using (_connection = factory.Create("one.sql"))
    {
        _connection.CreateTable<Kitten>();
    }

    using (_connection = factory.Create("one.sql"))
    {
        _connection.CreateTable<Kitten>();
    }
}

为什么它会在第二次使用时失败并出现上述异常?

我已经尝试手动调用 Close(), Dispose() ,将连接 var 设置为 null 并调用GC.Collect,但似乎没有什么可以解决这个问题。如果我关闭程序并重新启动,它工作正常。看起来该文件正在使用中或类似...

我一直调试到 SQLlite3 代码之前,以及 SQLiteConnection 构造函数中的这一行:

var r = SQLite3.Open(DatabasePath, out handle);

是返回的那个CannotOpen

除了关闭应用程序之外,有什么想法可以帮助我通过这个吗?关闭应用程序可能是一种可能性,但看起来像一个强大的解决方案,因为我的用户只是按下“注销”按钮。

4

0 回答 0