私のAndroidアプリケーションでは、複数のSQLiteテーブルに異なるスレッド(1つのテーブルに挿入するスレッドと5つのテーブル)からデータを挿入する必要があります。 >setTransactionSuccessful()
- - があり、私はbeginTransaction()
使うので、多くのデータがあるすべてのスレッドで>endTransaction();
をし、すべてのスレッドが同時に起動し、私は常にこの例外を得、時には第二または第三のスレッドで:私が使用データベースへの挿入時に現在のトランザクションがないため操作を実行できません
単一のSQLite接続(シングルトン)はmentioned hereでしたが、それにもかかわらずこの問題は残ります。私はいくつかの助けを願っています。
P.S競合状態がある場合は、マルチスレッド挿入に他の方法を使用する必要がありますか?
私は私の答え@AlexanderKaraberovにいくつかのアイデアを加えました。 – Gray
実際のデータベースの変更を行うクラス(DAOのみ)があります。あなたのスレッドは単に 'insert()'などを呼び出すでしょう。メソッドは 'synchronized'となり、すでに開始されていなければトランザクションを開始する必要があるのか、すでに開始していればトランザクションを終了するのかを決定します。 – Gray