본문 바로가기

Server Oriented/Java & JSP

PreparedStatement SQL 문에 ? 를 적용할 수 없는 것

이를테면,

String sql = "select no, name from table_name where no = '32' ";

라는 쿼리가 있다고 하자(물론, 정상 작동한다고 가정한다)..

 

우리가 익히 보아 온 PreparedStatment 의 SQL 문은 아래와 같은 것이다.

String sql = "select no, name from table_name where no = ? ";

 

그러면, DB table 의 column 대신에 ? 를 아래와 같이 사용해 보면 어떨까?

String sql = "select no, name from table_name where ? = ? ";

예외를 throw 하지도 않으면서 에러가 난다..

try ~ catch 에 잡히지도 않는다.

 

이제, DB table 명 대신에 ? 를 아래와 같이 사용해 보자.

String sql = "select no, name from ? where no = ? ";

이번에는 catch 에 아래와 같이 잡힌다.

java.sql.SQLException: ORA-00903: 테이블명이 부적합합니다

 

이것도 생각해 보자,

in (...)

대신 ? 를 아래와 같이 사용해 보자.

String sql = "select no, name from table_name where no in (?) ";

? 대신 하나의 항목을 대입하면 정상 작동하지만,

? 대신 여러개의 항목을 "32,33,34" 와 같이 입력하면,

예외는 발생하지 않지만 원하는 결과도 추출되지 않는다.