Heim > Datenbank > MySQL-Tutorial > Warum löst mein Java-Code die Ausnahme „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig' aus?

Warum löst mein Java-Code die Ausnahme „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig' aus?

Mary-Kate Olsen
Freigeben: 2024-12-14 21:34:15
Original
560 Leute haben es durchsucht

Why Does My Java Code Throw a

Verstehen der Ausnahme „Vorgang nicht zulässig, nachdem ResultSet geschlossen“

Beim Ausführen von SQL-Anweisungen in Java ist es wichtig, ResultSet-Objekte ordnungsgemäß zu verwalten um Ausnahmen zu vermeiden. Eine häufig auftretende Ausnahme ist „java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde.“

Diese Ausnahme tritt auf, wenn ein Vorgang (z. B. das Abrufen von Daten aus einem ResultSet) versucht wird, nachdem das ResultSet geschlossen wurde. Der von Ihnen bereitgestellte Codeausschnitt veranschaulicht dieses Problem.

Grundursache der Ausnahme

In Ihrem Code erstellen Sie ein Anweisungsobjekt und verwenden es, um zwei Abfragen auszuführen: eine um den Namen des Benutzers abzurufen, und eine andere, um IDs aus der Tabelle „Profile“ abzurufen. Anschließend versuchen Sie, ein PreparedStatement mit demselben Verbindungsobjekt zu erstellen und eine Update-Anweisung vorzubereiten.

Das Problem tritt auf, wenn Sie innerhalb der While-Schleife auf die Methode „getStuff()“ zugreifen und die Ergebnisse der „Profile“ durchlaufen. Tisch. Innerhalb dieser Methode:

  1. Sie führen eine Abfrage aus und erhalten ein ResultSet (rs).
  2. Sie schließen das ResultSet nicht, bevor Sie zurückkehren.

Dies verstößt gegen die Anforderung, dass jeweils nur ein ResultSet pro Statement-Objekt geöffnet sein darf. Infolgedessen kollidiert das ResultSet der Methode „getStuff()“ mit dem im Hauptcode erstellten ResultSet-Objekt (rs2).

Lösung

Um dieses Problem zu beheben Ausnahme: Sie müssen die ResultSet-Objekte ordnungsgemäß verwalten:

  1. Schließen Sie das vom erhaltenen ResultSet (rs). „getStuff()“-Methode vor der Rückkehr.
  2. Stellen Sie sicher, dass das ResultSet (rs) im Hauptcode auch geschlossen wird, sobald es nicht mehr benötigt wird.

Zusätzlich können Sie darüber nachdenken Erstellen eines neuen Statement-Objekts für die Methode „getStuff()“, um mögliche Konflikte mit dem im Hauptcode verwendeten Statement-Objekt zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum löst mein Java-Code die Ausnahme „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage