0

私は Java のプロジェクトに取り組んでおり、SQLite データベースを変更する必要があります。私はそれに接続し、この奇妙なエラーを除いて、かなりうまく機能しています。

s.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)");
...
//many statements... including queries
...
String c2="INSERT INTO STUDENTS VALUES ('S1', 2)";
s.executeUpdate(c2);
s.executeUpdate("DROP TABLE STUDENTS");

ステートメントs.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)");s.executeUpdate(c2);は完全に実行され、行がデータベースに挿入されます。しかし、以下のステートメントになると、奇妙な Database Locked エラーが発生します。クエリを別のクエリに変更したところ、問題なく動作しました。終了ステートメントに到達すると、エラーが発生します。より正確には、上記のすべてのクエリ、つまり、ここのコードの最初のステートメントは問題なく動作します。

バグを見つけるのを手伝ってください。

4

1 に答える 1

2

「s」変数はステートメントだと思います。実行後にリソースを閉じてみてください:

PreparedStatement updateStatement = connection.prepareStatement("INSERT INTO STUDENTS VALUES ('S1', 2)");
        try {
            updateStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            updateStatement.close();
        }

データベースへの呼び出しのたびにこれを行います。

于 2012-12-06T16:15:49.527 に答える