現在の SQLite 接続を閉じて、新しい接続を再開しようとしています。しかし、実際には同じものである場合もあります (DB 名は、ログイン後のユーザー 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>();
}
}
上記の例外を使用して 2 番目に失敗するのはなぜですか?
Close()、Dispose() を手動で呼び出しGC.Collect
、接続変数を null に設定して を呼び出してみましたが、これを修正するものは何もないようです。プログラムを閉じて新しく再起動すると、正常に動作します。ファイルが使用中か類似しているように見えます...
SQLlite3コードの前までデバッグしました.SQLiteConnectionコンストラクターの次の行:
var r = SQLite3.Open(DatabasePath, out handle);
戻る人CannotOpen
です。
アプリを閉じる以外に、これを渡すのに役立つアイデアはありますか? アプリを閉じることは可能かもしれませんが、ユーザーが「ログアウト」ボタンを押すだけなので、強力な解決策のように見えます.