androidアプリ作成時のメモです。
1140 views
androidで、こんな感じでトランザクションを仕掛けていたのだが、トランザクションをぶち抜いてinsertが動き、database is lockedエラーが起きてしまった。
期待していたのは、別スレッドでinsertしている間、待つという動作だったのだが、エラーって、それはないだろという問題が起きた。
try {
db.beginTransaction();
for (ContentValues val : valueList) {
long ret = db.insert("TestTable", null, val);
}
//トランザクション成功を宣言。
db.setTransactionSuccessful();
} finally {
// トランザクション終了
db.endTransaction();
db.close();
}
スレッドごとにDBをオープンしていたのが原因。
同じDBハンドルにしたら、トランザクションは守られ、キチンと待ってくれた。
Page 11 of 19.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/