java.sql.SQLException: database is locked
at org.sqlite.DB.throwex(DB.java:288)
at org.sqlite.NestedDB.prepare(NestedDB.java:115)
at org.sqlite.DB.prepare(DB.java:114)
at org.sqlite.Stmt.executeQuery(Stmt.java:89)
私はこの例外を取得します。私はSAとGoogleでそれを読んでいました。最も一般的な結論は、決して終わらない別のクエリを作成し始めたということです。私が抱えている問題は、以前このマシンでこのDBのクエリを実行したことがないことです。私はそれをホストした場所(以前作成したもの)からdbファイルをダウンロードし、何もしていないので、なぜロックされるのか分かりません。 SQLite Database Browserというプログラムを使ってクエリを実行すると、うまく動作します。助けてくれてありがとう、私は必要があれば、私に知らせてもっと情報を提供します。SQLite DBはロックされた例外です。もしこれまでお試しいただいていないのであれば、どうすればロックを解除できますか?
adapter = new DbAdapter();
ResultSet info;
ResultSet attributes;
for (int i = 1; i < 668; i++) {
if (i%50 == 0) {
System.out.print('.');
}
info = adapter.makeQuery("SELECT * FROM vehicles WHERE id = '" + i + "'");
attributes = adapter.makeQuery("SELECT * FROM vehicle_moves WHERE vehicle_id = '" + i + "'");
if(info.next()) {
base = new (info, attributes);
}
vehicleArray[i] = base;
}
System.out.println("Done.");
info.close();
attributes.close();
adapter.close();
上記はコードが発生している場所です。私はコード全体を通していくつかの宿題をしましたが、問題はこのコードにあります。他のDBクエリはうまく動作します。あなたから何かが飛び出した?
'DbAdapter'はパラメータ化/準備済みクエリを処理しませんか? SQLiteは確かにそうです!それはより速く安全です! –