헝D의 일기장

내가 맡은 업무의 코드에는 java PreparedStatement를 사용하는 코드들이 아주 많다.

근데 여기서 큰 문제점이 있었는데 PreparedStatement 를 재사용하는 방법이 잘못되어 있었다는 것이다.

<bash />
for(int i = 0; i<5; i++) { String sql = "select name, aget from testTable where condition ='"+value[i]+"'"; pstmt = conn.prepareStatement(sql); pstmt.executeUpdate(); }

 

이런식으로  for문 안에서 객체를 재할당 해주고 마지막에 finally 문에서 pstmt를 close해주는 식이었다.

하지만 이런 방식으로 사용한다면 가장 마지막의 pstmt만 close 되고 앞에서 할당한 pstmt는 절대 close 될 수 없는 구조를 가진다.

 

<bash />
String sql = "select name, aget from testTable where condition = ? "; pstmt = conn.prepareStatement(sql); for(int i = 0; i<5; i++) { pstmt.setString(1, value[i]); pstmt.executeUpdate(); pstmt.clearParameters(); }

 

이런식으로 객체 할당은 for문 밖에서 한번만 해주고 for 문을 돌면서 파라미터를 세팅해주는 방식으로 써야 올바른 사용법이다.

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!