現在、JDBCを使用してデータベースからアイテムを削除しようとしていますが、どうしても逃げる方法が見つからないというエラーが発生しています。エラーは次のとおりです。ここでデータベースからの削除時にResultSetが終了した後に操作が許可されない
Caused by: java.sql.SQLException: Operation not allowed after ResultSet closed
はJavaで、私はここでやっている何
System.out.println("Connecting database for Delete...");
Integer deletedCount = 0;
Statement deleteStatement = null;
try (Connection conn = DriverManager.getConnection(url, username, password)) {
System.out.println("Database connected!");
deleteStatement = conn.createStatement();
String selectDelete = "SELECT id FROM table WHERE end <= (NOW() - INTERVAL 1 HOUR)";
ResultSet rs = deleteStatement.executeQuery(selectDelete);
while (rs.next()) {
String eventid = rs.getString("id");
String deleteSQL = "DELETE FROM table WHERE id = " + eventid;
deleteStatement.executeUpdate(deleteSQL);
deletedCount++;
System.out.println(deletedCount);
}
System.out.println("Completed Delete! "+ deletedCount +" deleted!");
} catch (SQLException e) {
throw new IllegalStateException("Cannot connect the database!", e);
}
は、最初の日付が既に過ぎているすべての項目を選択すると、結果セットにそれを設定しています。その後、データベースから削除するためにwhileループを実行します。それは一度実行され、私は完全に下に置くエラーを取得します。私はループを通過するたびに新しいdelete文を作成する必要がありますか?私はこれを正しく行う方法を考え出すことができません。ここで
は完全なエラーです:
Connecting database for Delete...
Database connected!
1
Exception in thread "main" java.lang.IllegalStateException: Cannot connect the database!
at JDBC.deleteOverDueEvents(JDBC.java:56)
at EventJSON.main(EventJSON.java:31)
Caused by: java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:743)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6313)
at JDBC.deleteOverDueEvents(JDBC.java:45)
... 1 more
これは理にかなっています。私は、削除されたアイテムの数を得るためにループを行っていました。あなたはその声明からちょうどそれを返せますか? – user081608
はい、戻り値はhttps://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String) –
からご覧ください。パーフェクト、それを知らなかった戻ってきた。 – user081608