我正在尝试关闭当前的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
的人。
除了关闭应用程序之外,任何可以帮助我通过这个的想法? 关闭应用程序可能是一种可能,但看起来像一个强大的解决方案,因为我的用户只是按下“注销”按钮。