私はAndroidでsqliteトランザクションを使用しています:
SQLiteDatabase database = sqlite_helper.getWritableDatabase();
database.beginTransaction();
...
database.setTransactionSuccessful();
database.endTransaction();
私の質問は次のとおりです:
1。endTransaction()
最後に次のようなコードブロックに配置する必要があります:</ p>
try {
database.beginTransaction();
...
database.setTransactionSuccessful();
}
finally {
database.endTransaction();
}
データベース操作中に実行が発生した場合、データベースは「finally」を使用せずに自動的にロールバックされますか?
- トランザクションが終了していない場合、他のスレッドが同じデータベースを読み書きできますか?Androidのsqliteはスレッドセーフだと聞きましたが、よくわかりません。取引中に問題が発生するのではないかと思います。別のスレッドが同じ接続で同じデータベースに書き込む場合、エラーが発生しますか?
私は自分のアプリでこのエラーを見つけたことがありますが、それがスレッドセーフの問題に関連しているかどうかはわかりません:
android.database.sqlite.SQLiteMisuseException: library routine called out of sequence:
、コンパイル中
誰かが私がこれらの質問に答えるのを手伝ってくれますか?どうもありがとう!