私のデータベースは非同期モードで開かれています。これは、コミットで情報を挿入しようとしている部分です。このジョブを実行している間は何も起こりませんでした。
conn.addEventListener(SQLEvent.COMMIT, commitHandler);
conn.begin();
for (var i:int = 0; i < someData.length; i++)
{
saveStmt = new SQLStatement();
saveStmt.sqlConnection = conn;
saveStmt.text = sql;
saveStmt.parameters["@some_ID"] = someData[i].id;
saveStmt.parameters["@some_title"] = someData[i].title;
saveStmt.execute();
}
conn.commit();
//here is commit handler
private function commitHandler(e:SQLEvent):void
{
saveStmt = null;
conn.removeEventListener(SQLEvent.COMMIT, commitHandler);
conn.close(); //this gives error: Database file is currently locked
}
conn.close();でエラーが発生し ます。、 「データベースファイルは現在ロックされています」という理由で実行できません
Adobe のヘルプから: SQLEvent.COMMIT 定数は、コミット イベント オブジェクトの type プロパティの値を定義します。このタイプのイベントは、SQLConnection.commit() メソッド呼び出しが正常に完了したときに送出されます。
システムの何が問題になっている可能性がありますか? 奇妙なことに、このエラーは永続的ではなく、時々表示されます (その他の場合、すべてが問題なく進み、データベースが正常に閉じられます) 。conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); でこのエラーをキャッチしています。、他の種類のエラーは表示されず、上記のみが表示されます。
上記のエラーは、Flash Pro のエミュレーターとデバイスでも発生します (Nexus 7 タブレットでは問題なく、Samsung Galaxy s3 で取得できます)。Android 用の Adobe Air 3.8 を使用しています。3.7 と 3.6 でも同じことが起こります。