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.