Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich bei der Verwendung von JDBC die Fehlermeldung „java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde'?
Java – Ergebnissatz kann nach Verbindungsschließung nicht verwendet werden
Problem:
Ein Versuch dazu Das Ausführen einer Datenbankabfrage mit JDBC führt zu folgendem Fehler:
java.sql.SQLException: Operation not allowed after ResultSet closed
Analyse:
JDBC verwendet ein ResultSet-Objekt, um Daten aus einer Abfrage abzurufen. Wenn jedoch die Verbindung zur Datenbank geschlossen wird, wird das ResultSet-Objekt ungültig und kann nicht mehr verwendet werden.
Lösung:
Um dieses Problem zu beheben, vermeiden Sie die Übergabe das ResultSet-Objekt über die Methode hinaus, die die Abfrage ausgeführt hat. Verwenden Sie stattdessen das ResultSet, um ein Objekt oder eine Liste zu füllen und das resultierende Objekt zurückzugeben.
Beispielcode zum Auffüllen von Objekten:
<code class="java">public static Collection<T> sqlquery (String query, RowMapper<T> rowMapper) throws SQLException { Connection connection=null; Statement st=null; ResultSet rs=null; connection = DriverManager.getConnection("databaseadress","username","password"); st = connection.createStatement(); rs = st.executeQuery(query); Collection<T> collection = new ArrayList<>(); while (rs.next()) { collection.add(rowMapper.mapRow(rs)); } // Close resources even if exceptions are thrown closeGracefully(rs, st, connection); return collection; }</code>
Ressourcen ordnungsgemäß schließen :
<code class="java">private static void closeGracefully(ResultSet rs, Statement st, Connection connection) { if (rs != null) { try { rs.close(); } catch (SQLException e) { /* Log or ignore */ } } if (st != null) { try { st.close(); } catch (SQLException e) { /* Log or ignore */ } } if (connection != null) { try { connection.close(); } catch (SQLException e) { /* Log or ignore */ } } }</code>
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWarum erhalte ich bei der Verwendung von JDBC die Fehlermeldung „java.sql.SQLException: Vorgang nicht zulässig, nachdem ResultSet geschlossen wurde'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!