Java JDBC MySQL-Ausnahme: „Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde“
Dieser Fehler tritt häufig auf, wenn versucht wird, mit einem geschlossenen ResultSet zu arbeiten. Analysieren wir den bereitgestellten Code, um die Ursache der Ausnahme zu identifizieren.
Datenbankinitialisierung
Die MySQLDatabase-Klasse stellt in der connect()-Methode eine Verbindung zur Datenbank her. Die Anweisungsvariable wird mit Connection.createStatement() initialisiert. Diese Anweisung gilt jedoch für alle Datenbankvorgänge, einschließlich Auswahl- und Aktualisierungsabfragen.
Spendenverarbeitung
Die MySQLDonation-Klasse durchläuft die Tabelle „Spenden“ und verarbeitet Spenden Aufzeichnungen. Die while-Schleife durchläuft das ResultSet, das aus der Abfrageanweisung („SELECT * FROM gieli436_purchases.donations“) erhalten wurde.
Ausnahmeursache
Der Fehler tritt auf, weil die Anweisung verwendet wurde zum Abrufen des ResultSet wird auch zum Ausführen der Löschabfrage verwendet, die das vorherige ResultSet schließt. Infolgedessen lösen nachfolgende next()-Aufrufe für das geschlossene ResultSet die Ausnahme „Vorgang nach geschlossenem ResultSet nicht zulässig“ aus.
Lösung
Um dieses Problem zu beheben, erstellen Sie eine neue Anweisung für jede Abfrageausführung. Ändern Sie die MySQLDatabase-Klasse, um „statement = Connection.createStatement();“ zu entfernen. von connect(). Ersetzen Sie alle Instanzen der Anweisung in der Klasse durch „connection.createStatement()“.
Korrekturen
// MySQLDatabase class // Remove statement = connection.createStatement(); // Replace statement with connection.createStatement() // MySQLDonation class // Remove private variable statement // Query execution results = connection.createStatement().executeQuery("SELECT * FROM gieli436_purchases.donations"); // Delete execution connection.createStatement().executeUpdate(String.format("DELETE FROM gieli436_purchases.donations WHERE donations.username='%s' LIMIT 1", client.playerName.replaceAll(" ", "_")));
Indem Sie für jede Abfrage separate Anweisungen erstellen, stellen Sie sicher, dass das ResultSet bleibt während der Verarbeitung geöffnet und verhindert so die Ausnahme.
Das obige ist der detaillierte Inhalt vonWarum löst mein Java-JDBC-MySQL-Code „Vorgang nicht zulässig, nachdem ResultSet geschlossen' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!