이를테면,
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" 와 같이 입력하면,
예외는 발생하지 않지만 원하는 결과도 추출되지 않는다.
'Server Oriented > Java & JSP' 카테고리의 다른 글
Collections 안에 다른 Collections 을 넣었을 때의 GC (1) | 2022.06.21 |
---|---|
ORA-22990: LOB 위치는 트랜잭션을 걸칠 수 없습니다 (0) | 2021.11.15 |
header 의 Referer 가 null 인 경우 (0) | 2021.07.19 |
크롬에서 로그인시 세션 만료 에러 (iframe 때문?) (0) | 2021.03.05 |
네이버 검색 엔진이 가져가는 웹사이트 제목 타이틀 획득 타이밍..? (0) | 2019.07.29 |