Vorgang nach dem Schließen des MySQL-Ergebnissatzes nicht zulässig
Bei der Interaktion mit einer Datenbank über JDBC ist es wichtig, ResultSet-Objekte sorgfältig zu behandeln Vermeiden Sie Ausnahmen wie „Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde.“ Dieser Fehler tritt auf, wenn Sie versuchen, Vorgänge für ein ResultSet auszuführen, das bereits geschlossen wurde.
Die Ausnahme verstehen
Die Ausnahme wird ausgelöst, wenn Sie versuchen, über a zu iterieren ResultSet mit seiner next()-Methode, nachdem es geschlossen wurde. Dies geschieht, weil durch das Schließen eines ResultSets dessen Ressourcen, einschließlich seines internen Cursors, freigegeben werden, wodurch es für weitere Vorgänge ungültig wird.
Ursachen für geschlossene Ergebnismengen
Lösung im bereitgestellten Code
Der Fehler im bereitgestellten Code tritt innerhalb der auf MySQLDonation-Klasse beim Durchlaufen der Spendentabelle. Das aus der SELECT-Abfrage erhaltene ResultSet wird geschlossen, wenn die Anweisung für nachfolgende DELETE-Abfragen erneut ausgeführt wird.
Um dieses Problem zu beheben, trennen Sie die Schritte der Abfrageausführung und der Ergebnisverarbeitung:
// In MySQLDatabase class private void handleDonation(Client client, int creditamount) { try (Statement statement = getConnection().createStatement()) { // Execute DELETE query with new Statement statement.executeUpdate(String.format("DELETE ...")); } }
Indem Sie für jede Abfrage eine neue Anweisung erstellen, stellen Sie sicher, dass das ResultSet geöffnet bleibt, bis die Abfrage abgeschlossen ist.
Zusätzlich Hinweise
Das obige ist der detaillierte Inhalt vonWarum tritt in JDBC das Problem „Vorgang nach dem Schließen von ResultSet nicht zulässig' auf und wie kann das Problem behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!