Heim >Datenbank >MySQL-Tutorial >Warum tritt bei der Wiederverwendung einer Anweisungsverbindung in Java die Meldung „Vorgang nach dem Schließen von ResultSet nicht zulässig' auf?
Schließen des ResultSet vor der Wiederverwendung der Anweisungsverbindung
Bei der Java-Datenbankprogrammierung tritt gelegentlich eine Ausnahme auf, die auftritt, wenn eine vorbereitete Anweisung nach dem Schließen verwendet wird das ResultSet. Diese Ausnahme „Vorgang nach Schließen des ResultSets nicht zulässig“ tritt insbesondere dann auf, wenn dasselbe Verbindungsobjekt verwendet wird.
Im angegebenen Codeausschnitt wird nach dem Schließen der vorhandenen ResultSets eine neue vorbereitete Anweisung mit demselben Verbindungsobjekt erstellt (rs und rs2). Dies löst die Ausnahme aus. Um dieses Problem zu beheben und die Anweisungsverbindung wiederzuverwenden, empfiehlt es sich, zunächst sicherzustellen, dass alle vorherigen ResultSets, die mit der Anweisung verknüpft sind, geschlossen sind.
Ein empfohlener Ansatz ist die Verwendung eines Try-with-Resources-Blocks, der ResultSets automatisch schließt und Aussagen. Hier ist ein Beispiel:
try ( Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;") ) { if (rs.next()) { // Process the results } try ( ResultSet rs2 = statement.executeQuery("SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";") ) { String updateSql = "INSERT INTO `blah` ..."; PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql); while (rs2.next()) { // ... } pst.executeBatch(); } } catch (SQLException e) { e.printStackTrace(); }
In diesem Beispiel werden sowohl rs als auch rs2 in ihren jeweiligen Try-Blöcken geschlossen, bevor versucht wird, die Anweisung zum Vorbereiten eines neuen Stapels zu verwenden. Dadurch wird sichergestellt, dass vor der Ausführung der vorbereiteten Anweisung keine offenen ResultSets vorhanden sind.
Denken Sie daran, dass die Aufrechterhaltung aktiver ResultSet-Objekte für die korrekte Datenbankinteraktion von entscheidender Bedeutung ist. Priorisieren Sie immer die ordnungsgemäße Handhabung und Bereinigung von Ressourcen, um Ausnahmen zu vermeiden und die Datenintegrität sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum tritt bei der Wiederverwendung einer Anweisungsverbindung in Java die Meldung „Vorgang nach dem Schließen von ResultSet nicht zulässig' auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!