집 >데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용할 때 \'java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않음\'이 발생하는 이유는 무엇입니까?
Java - 연결이 닫힌 후 ResultSet을 사용할 수 없음
문제:
JDBC를 사용하여 데이터베이스 쿼리를 실행하면 다음 오류가 발생합니다.
java.sql.SQLException: Operation not allowed after ResultSet closed
분석:
JDBC는 ResultSet 개체를 활용하여 쿼리에서 데이터를 검색합니다. 그러나 데이터베이스에 대한 연결이 닫히면 ResultSet 개체가 유효하지 않게 되어 더 이상 사용할 수 없습니다.
해결책:
이 문제를 해결하려면 전달을 피하세요. 쿼리를 실행한 메소드 이외의 ResultSet 객체. 대신 ResultSet을 사용하여 객체나 목록을 채우고 해당 결과 객체를 반환합니다.
객체 채우기를 사용한 예제 코드:
<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>
정상적으로 리소스 닫기 :
<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>
추가 고려 사항:
위 내용은 JDBC를 사용할 때 \'java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않음\'이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!