尝试重新打开相同的数据库时无法打开异常

时间:2013-10-13 06:55:37

标签: sqlite mvvmcross

我正在尝试关闭当前的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(),将connection var设置为null并调用GC.Collect,但似乎没有解决这个问题。 如果我关闭程序并重新启动新程序,它可以正常工作。 看起来该文件正在使用或类似...

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

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

是返回CannotOpen的人。

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

0 个答案:

没有答案