android

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

829 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。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626