Java-Fehler Operation nicht zulässig, nachdem ResultSet geschlossen wurde
-
Java-Fehler
java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde
-
Behebung des Java-Fehlers
java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde
Dieses Tutorial demonstriert den Fehler java.sql.SQLException: Vorgang nicht erlaubt, nachdem ResultSet geschlossen wurde
in Java.
Java-Fehler java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde
Der Fehler Operation Not Allowed After Resultset Closed
ist eine SQL-Ausnahme, wenn wir versuchen, auf eine geschlossene Ergebnismenge zuzugreifen. Wie das Java-Dokument erwähnt, wird jedes Mal, wenn ein Anweisungsobjekt geschlossen wird, wenn sein Resultset
-Objekt existiert, es auch geschlossen.
Das Problem mit dem Fehler ist, dass die Instanz Resultset
auch die zugrunde liegende Anweisung speichert. Wenn also die zugrunde liegende Anweisung geschlossen wird, wird auch das Resultset
geschlossen, was den Fehler auslöst.
Hier ist ein Codeausschnitt, der denselben Fehler auslöst.
Code:
ResultSet Result_Set; // class variable
Statement Demo_Statement = null;
try {
Demo_Statement = DB_Connection.createStatement();
Result_Set = Demo_Statement.getGeneratedKeys();
} catch (Exception e) {
throw e;
} finally {
try {
if (Demo_Statement != null)
Demo_Statement.close();
} catch (SQLException e) {
throw e;
}
}
System.out.println(Result_Set.next());
Der obige Code mit einer Datenbankverbindung löst den folgenden Fehler aus.
java.sql.SQLException: Operation not allowed after ResultSet closed
Behebung des Java-Fehlers java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde
Das Problem im Code ist, dass wir die Anweisungsinstanz nicht schließen können, bevor wir mit Resultset
fertig sind. Sobald wir mit Resultset
fertig sind, können wir sowohl Resultset
als auch Statement Instance schließen.
Wie wir sehen können, versuchen wir, den booleschen Wert von Result_Set.next()
zu drucken, aber wir verwenden das Resultset
nach dem Schließen der Anweisungsinstanz, wodurch auch das Resultset
geschlossen wird.
Im obigen Code besteht die Lösung darin, die Anweisung an dieser Stelle nicht zu schließen oder das Resultset
nach dem Schließen der Anweisungsinstanz nicht zu verwenden. Abhängig von Ihrer Anwendung können wir entweder das Demo_Statement.close()
oder das System.out.println(Result_Set.next());
entfernen. Stellungnahme.
Code:
ResultSet Result_Set; // class variable
Statement Demo_Statement = null;
try {
Demo_Statement = DB_Connection.createStatement();
Result_Set = Demo_Statement.getGeneratedKeys();
} catch (Exception e) {
throw e;
} finally {
try {
if (Demo_Statement != null)
Demo_Statement.close();
} catch (SQLException e) {
throw e;
}
}
Wir haben gerade den Teil entfernt, in dem wir versuchen, das Resultset
zu verwenden, nachdem die Anweisungsinstanz geschlossen wurde. Sobald alle Operationen mit Resultset
abgeschlossen sind, können wir sowohl die Anweisungsinstanz als auch Resultset
schließen.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse