top of page

ResultSet 의close()와 Statement의 close()의 차이점

ResultSet 의close()와 Statement의 close()의 차이점

JDBC Application 프로그램 구현시에 무심코 사용하는 ResultSet 의close()와 Statement의 close()의 차이점을잠시 언급하려 합니다. 정확하게 이해하고 있으면 JDBC 오류분석시에 도움이 될 것 같아서 입니다. Connection을 Close하는 것은 우리가 일반적으로생각하는 DB Connection을 Close하는 것으로 이해하시면 됩니다. JDBC의 Statement 객체는 정적인 Sql문을 실행하는데 쓰이는 Object입니다. Statement를 close하는 것은 정적인 sql문을 실행하고 결과를 얻기 위해서 사용한 DB서버와 JDBC와 관련된 자원 들을 반납하는 것을 말합니다. 주의할 것은 이때에 DB쪽에 실행한 Sql문의 Lock을Relese한다는 것입니다. (Update 일때가 대표적인 예입니다.)ResultSet 객체는 Statement 객체를 이용하여 질의한 결과를 Return 받는Object인데ResultSet을 Close하는 것은 쉽게 말해서 DB쪽의 해당 ResultSet에 할당된커서를 close하는 것으로 이해하시면 됩니다. 정확히 말하면 DB서버 Side와 JDBC driver쪽의 해당 ResultSet Object의자원을 반납하는 것이데 이렇게 말하면 너무 어렵고 그냥 ResultSet을 Close하면 ‘DB서버 Side에서커서를 Close한다’ 라고생각하시면 됩니다. 아래의 예제를 보시면 정적인 SQL문을 실행하기 위해서 Statement 객체를하나 만들고 ResultSet을 두개 만든 다음 Query를 두번 실행한 다음각각 Close를 수행했는데 위의 설명과 대응시켜서 이해하시면 될것같습니다. —————<예제>————– Connection conn; String myQry1,myQry2; ResultSet rset1 ,rset2; Statement stmt ; stmt = conn.CreateStatement(); rset1 = stmt.executeQuery(myQry1); rset1.close(); rset2 = stmt.executeQuery(myQry2); rset2.close(); stmt.close(); conn. close(); ————————————

조회수 5회댓글 0개

Commentaires


bottom of page