Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abrufen von java.sql.SQLException:Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde

Das Problem liegt in der Art und Weise, wie Sie Daten in getStuff() abrufen . Jedes Mal, wenn Sie getStuff() besuchen Sie erhalten ein neues ResultSet aber du schließt es nicht.

Dies verstößt gegen die Erwartung der Statement Klasse (siehe hier - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html ):

Standardmäßig kann nur ein ResultSet-Objekt pro Statement-Objekt gleichzeitig geöffnet sein. Wenn also das Lesen eines ResultSet-Objekts mit dem Lesen eines anderen verknüpft ist, muss jedes von unterschiedlichen Statement-Objekten generiert worden sein. Alle Ausführungsmethoden in der Statement-Schnittstelle schließen implizit das aktuelle ResultSet-Objekt eines Statements, wenn ein offenes vorhanden ist.

Was die Sache noch schlimmer macht, ist der rs aus dem Anrufcode. Es wird auch von der Statement abgeleitet Feld, aber es ist nicht geschlossen.

Fazit:Sie haben mehrere ResultSet die sich auf dieselbe Statement beziehen Objekt gleichzeitig geöffnet.