ResultSet-Wiederverwendungslösung für „java.sql.SQLException: Operation nicht zulässig, nachdem ResultSet geschlossen wurde“
Bei der Begegnung mit „java.sql. Der Fehler „SQLException: Vorgang nach ResultSet geschlossen nicht zulässig“ weist darauf hin, dass mehrere Ergebnismengen gleichzeitig vom selben Anweisungsobjekt verwendet werden. Dies verstößt gegen die Standarderwartung der Statement-Klasse, die zulässt, dass jeweils nur ein ResultSet geöffnet ist.
Um dieses Problem im bereitgestellten Code zu beheben, sollten die folgenden Schritte unternommen werden:
In der getStuff()-Methode:
Im aufrufenden Code:
Der geänderte Code mit diesen Korrekturen würde wie folgt aussehen:
try { //Get some stuff String name = ""; String sql = "SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;"; ResultSet rs = statement.executeQuery(sql); if (rs.next()) { name = rs.getString("name"); } rs.close(); // Close the ResultSet 'rs' String sql2 = "SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";"; ResultSet rs2 = statement.executeQuery(sql2); String updateSql = "INSERT INTO `blah`............"; PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql); while (rs2.next()) { int id = rs2.getInt("id"); int stuff = getStuff(id); pst.setInt(1, stuff); pst.addBatch(); } rs2.close(); // Close the ResultSet 'rs2' pst.executeBatch(); } catch (Exception e) { e.printStackTrace(); } private int getStuff(int id) { try { String sql = "SELECT ......;"; ResultSet rs = statement.executeQuery(sql); if (rs.next()) { int result = rs.getInt("something"); rs.close(); // Close the ResultSet 'rs' in 'getStuff' method return result; } return -1; }//code continues }
Durch die Implementierung dieser Änderungen stellt der Code sicher, dass alle ResultSets betroffen sind ordnungsgemäß geschlossen, wodurch der Fehler „java.sql.SQLException: Vorgang nach ResultSet geschlossen nicht zulässig“ verhindert wird.
Das obige ist der detaillierte Inhalt vonWie löse ich „java.sql.SQLException: Vorgang nach dem Schließen von ResultSet nicht zulässig'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!