2009-06-26 6 views
5

明示的なAutoCommitをtrueまたはfalseで使用していませんが、SQLiteエラーが発生しています。 誰でもこのエラーの入力を提供できます。このエラーが発生する状況は何ですか?SQLiteエラー:トランザクションをコミットできません - Javaコードを使用して進行中のSQL文

ありがとうございます。 よろしくお願いします。 Manasi Save

+0

コードフラグメントを投稿してください。 –

+0

実行しているSQLiteのバージョンは? –

+0

私はSQLiteバージョン3を使用しています –

答えて

5

私はループ内にテーブルエントリをループしていたとき、私は同じような問題を繰り返していました(私の場合はロールバックでした)。カーソルが項目を処理している限り、SQLステートメントは「進行中」です。私もこれがコミットを禁止しているのかどうかは分かりませんが、それは可能です。

テーブルエントリを処理して同一または別のテーブルにエントリを挿入しようとすると、メモリ内のデータを収集し、ループの後に挿入または更新を実行することができます。

Addtitional info:「Autocommit」は通常、SQLiteではデフォルトで「True」に設定されています(もちろん、使用するアクセスレイヤーにも依存する可能性があります - 私はPythonとapswを使用しています。 Javaで)。これは、すべてのインサートがすぐに自動コミットされることを意味します。

==>これは他の解決策になる可能性があります。データをメモリに格納する代わりに、トランザクションを明示的にオープンしてループの後にコミットすることもできます。このようにして、問題は解決されます。