PreparedStatement 객체
- statement를 상속받는 인터페이스로 SQL구문을 실행시키는 기능을 갖는 객체
- 상속을 받으므로 close 메소드를 새로 작성x (동적바인딩)
- SQL문에서 변수가 들어갈 자리는 ‘?’ 로 표시한다.
- statement와 달리 짐을 넣고 출발하는 개념
- prepareStatement 메소드를 통해 쿼리문을 미리 입력
- 쿼리를 미리 인지시켰으므로 ResultSet 객체를 생성할 때 쿼리 담기X
- 개념 코드
[ PreparedStatement 사용 ]
- 주로 쿼리가 일정하지 않을 떄 <?> 를 사용하여 값을 지정한다.
- 쿼리가 일정하면 statement 사용이 효율적
- <?> 는 placeholder 라고 한다.
- 보안성을 고려하여 주로 사용, SQL인젝션 방지.
< 인스턴스 생성 코드>
pstmt = con.prepareStatement("SELECT EMP_ID, EMP_NAME, SALARY FROM EMPLOYEE WHERE EMP_ID = ?");
pstmt.setString(1, empId);
prepareStatement( ) 메소드를 이용해 쿼리문으로 전달할 코드 작성
- 값을 입력 받을 부분은 <?> 로 표기
- 입력받을 쿼리문을 변수로 받아도 가능하다.
setString( )메소드를 이용하여 알맞은 위치에 값을 넣는다.
- setString(<?>의 순서, 넣을 값 )
- 자료형에 따라 setString, setInt 등 바뀔 수 있다.
[ 와일드 카드 사용 ]