0

現在の 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です。

アプリを閉じる以外に、これを渡すのに役立つアイデアはありますか? アプリを閉じることは可能かもしれませんが、ユーザーが「ログアウト」ボタンを押すだけなので、強力な解決策のように見えます.

4

0 に答える 0