본문 바로가기

Computer/JSP

statement 쿼리와 preparedStatement 쿼리의 차이점

# 이 글은 싸이월드 블로그에 내가 작성했던 글을 옮겨온 글이다. #

 

 

statement 와 preparedStatement 는 둘 다 쿼리를 날릴 때 사용하는 것은 동일하다.

 

하지만 이 둘의 차이점은 statement는 sql문을 매 번 컴파일 해서 실행하는 것이고

 

preparedStatement는 컴파일을 한 상태에서 "?"에 해당하는 부분을 바인딩 한다는 것이다.

 

예를 들면 statement의 경우는

 

Statement stmt;

 

String sql = "select * from board wher id=wind";

 

stmt = conn.createStatement(sql);

 

stmt.executeQuery();

 

이런식으로 사용한다.

 

그리고 preparedStatement의 경우에는

 

PreparedStatement pstmt;

 

String sql = "select * from board wher id=?";

 

pstmt = conn.prepareStatement(sql);

 

pstmt.setString(1, wind); //또는 wind라고 직접 입력하는 대신에 request.getParameter("id"); 등으로 가능

 

pstmt.executeQuery();

 

이렇게 사용할 수 있다.

 

preparedStatement를 이용하는 것이 관리가 더 편리하다.

 

preparedStatement의 경우 여러 개의 값을 입력 받아온 값으로 설정하기 좋다.

 

위의 경우에는 id만 가져와서 했지만 password와 함께 받는다면

 

PreparedStatement pstmt;

 

String sql = "select * from board wher id=? and password=?";

 

pstmt = conn.prepareStatement(sql);

 

pstmt.setString(1, request.getParameter("id"));

 

pstmt.setString(2, request.getParameter("password"));

 

pstmt.executeQuery();

 

이렇게 사용할 수 있는 것이다. 갯수의 제한은...잘은 모르겠으나(javadoc에는 있으려나?) 나는 16개까지 "?"를 써서 이런 식으로 사용해 봤다.

 

출처 : 내가 했어!!

'Computer > JSP' 카테고리의 다른 글

자바스크립트를 이용한 페이지 이동  (0) 2013.11.05