Warum bekomme ich das ResultSet geschlossen ist Fehler, wenn ich nie alle geschlossen
Ich habe diesen Fehler in meinem code und habe geprüft und bearbeitet Sie gründlich, doch ich bekomme immer noch dasselbe Problem. Ich benutze auch mehrere resultSet und Aussagen noch gleiche Fehler Auftritt. Unten ist die Fehlermeldung die ich bekomme:
"Database Connected with Current Date 20130221
java.sql.SQLException: ResultSet is closed
at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.next(Unknown Source)
at UNSUB.main(UNSUB.java:78)"
Press any key to continue . . .
Bitte, Was könnte der Grund sein? Ich habe keine Idee, jede Lösung, die jetzt.
- poste deinen code hier ein, nur dann können wir helfen.
- bitte poste deinen code.
- Beachten Sie, dass das resultset geschlossen wird, wenn die Aussage oder die Verbindung wird geschlossen. Das Ergebnis hängt von der Anweisung, das hängt von der Verbindung ab.
- Können Sie bitte teilen Sie irgendeine Art von code
- ok. Ich werde senden Sie es frühestens
- Mein code ist zu groß gepostet werden... pls wie kann ich über das?
- post nur das snippet, wo Sie extrahieren Daten aus den
resultSet
. Niemand ist daran interessiert, den rest des Codes sowieso.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausnahme,
java.sql.SQLException: ResultSet is closed
bedeutet, dass der code entweder schon geschlossen ResultSet-ObjektSie verwenden, oder mehr wahrscheinlich, dass Ihr code hat entweder wieder ausgeführt oder geschlossen die Aussage, dass
produziert wird das Ergebnis festgelegt. Durch JDBC-Spezifikationen, entweder die Aktionen schließen
ResultSet von der Anweisung.
rs1 = stmt2.executeQuery("select cnt from t1 where num = '"+ str2 +"'"); rs1.next(); cnt = rs1.getInt("cnt"); if(cnt > 0) { rs2 = stmt3.executeQuery("select * from t1 where num = '123"); while (rs2.next()) { reg_date = rs2.getString("reg"); ins1 = stmt3.executeUpdate("INSERT INTO t2 ([num]) VALUES('"+ str2 +"')"); Thread.sleep(10); ins2 = stmt3.executeUpdate("delete from t1 where num = '"+ str2 +"'); } }
Haben Sie die Methode aufgerufen
next()
auf die Ergebnismenge?? Wenn Sie nicht, dass könnte der Grund für Sie, um den Fehler zu finden.next()
aufgerufen wurde'
am Ende und während der Ausführung der delete-Anweisung, u verpasst haben, ein doppeltes Anführungszeichen. Überprüfen Sie diese und lassen Sie mich wissen, wenn es funktioniert.