ResultSet 반환
데이터베이스를 쿼리할 때 반환된 결과를 효과적으로 처리해야 합니다. 데이터베이스를 쿼리하는 메서드에서 ResultSet을 반환하려고 할 때 한 가지 일반적인 문제가 발생합니다. 그러나 ResultSet을 직접 반환하면 리소스 누수 및 부적절한 리소스 관리가 발생할 수 있습니다.
"java.sql.SQLException: ResultSet 닫힌 후 작업이 허용되지 않음" 오류는 메서드가 작동하기 전에 ResultSet 객체가 닫혔음을 나타냅니다. 돌려보내세요. 이 문제를 해결하려면 ResultSet을 Javabean 컬렉션에 매핑하고 대신 반환하는 것이 좋습니다. 이 접근 방식을 사용하면 사용 후 ResultSet가 자동으로 닫혀 리소스 누출을 방지할 수 있습니다.
ResultSet을 Javabean 목록에 매핑하는 방법의 예가 아래에 제공됩니다.
public List<Biler> list() throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; List<Biler> bilers = new ArrayList<Biler>(); try { connection = database.getConnection(); statement = connection.prepareStatement("SELECT id, name, value FROM Biler"); resultSet = statement.executeQuery(); while (resultSet.next()) { Biler biler = new Biler(); biler.setId(resultSet.getLong("id")); biler.setName(resultSet.getString("name")); biler.setValue(resultSet.getInt("value")); bilers.add(biler); } } finally { if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {} if (statement != null) try { statement.close(); } catch (SQLException ignore) {} if (connection != null) try { connection.close(); } catch (SQLException ignore) {} } return bilers; }
여기서 예를 들어 list() 메서드는 데이터베이스를 쿼리하고 결과를 Biler 객체 목록에 매핑한 다음 목록을 반환합니다. 이렇게 하면 ResultSet이 제대로 닫히고 리소스 누출이 방지됩니다.
또 다른 접근 방식은 코드 블록이 완료되면 자동으로 리소스를 닫는 try-with-resources 문을 사용하는 것입니다.
public List<Biler> list() throws SQLException { List<Biler> bilers = new ArrayList<Biler>(); try ( Connection connection = database.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT id, name, value FROM Biler"); ResultSet resultSet = statement.executeQuery(); ) { while (resultSet.next()) { Biler biler = new Biler(); biler.setId(resultSet.getLong("id")); biler.setName(resultSet.getString("name")); biler.setValue(resultSet.getInt("value")); bilers.add(biler); } } return bilers; }
이러한 권장 사항을 따르면 개발자는 ResultSet가 올바르게 처리되어 리소스 누출을 방지하고 Java 애플리케이션에서 효율적인 데이터베이스 액세스를 보장할 수 있습니다.
위 내용은 Java에서 `java.sql.SQLException: ResultSet이 닫힌 후 작업이 허용되지 않음`을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!