android

androidアプリ作成時のメモです。

1141 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/

ツイッター

@darkimpact0626