5

Xamarin.Android を使用して、Mono.Data.Sqlite パッケージ (Nexus 7 を使用) を使用して sqlite データベースで遊んでみました。

複数のスレッドを使用しようとするまではすべて問題ありませんでしたが、データベースが破損するか、データベースをロックするさまざまな例外が発生しました (つまり、データベースに再度アクセスするには、アプリケーションを停止して再起動する必要がありました)。

ここで推奨されているように、アプリでできるだけ早く次のコードを実行しようとしました:

Mono.Data.Sqlite.SqliteConnection.SetConfig (Mono.Data.Sqlite.SQLiteConfig.Serialized);

しかし、次の行に Mono.Data.Sqlite.SqliteException が表示されます。

Library used incorrectly

同じ結果で、列挙型 (SingleThreaded、Serialized、MultiThreaded) の 3 つの可能な値を試しました。

この方法はまったく機能していますか?


編集:ソースの問題(厄介な無限ループ、それを取り除くことは決してありません...)を修正したので、スレッド構成をいじる必要はもうありません。

ただし、問題はまだここにあり、他の人が実験したため、他の人のために質問を開いたままにします(この回答のコメントを参照してください)

4

1 に答える 1

0

価値があるのは、データベースに対して書き込みが行われたときにアクセスしようとすると、SQLiteが非常に扱いにくいことがわかったからです。そうは言っても、私は自分に反対することはあまり書いていません。ただし、読み取りアクセスと複数のスレッドで運が良いかもしれないことに言及したかったのです。まだ行っていない場合は、書き込み/読み取り用の明示的なパスを使用して呼び出すことをお勧めします。コードでこれを使用して単純化します。

         protected SQLiteConnection ReadableDB
         {
             get{return new SQLiteConnection(ReadableDatabase.Path);}
          }

         protected SQLiteConnection WriteableDB
         {
             get{return new SQLiteConnection(WritableDatabase.Path);
         }
于 2014-01-31T05:24:06.183 に答える