Server Oriented/Java & JSP
PreparedStatement SQL 문에 ? 를 적용할 수 없는 것
래빗 크리스
2021. 9. 29. 17:22
이를테면,
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" 와 같이 입력하면,
예외는 발생하지 않지만 원하는 결과도 추출되지 않는다.