Prepared Statement 의 in 사용 에 대하 여

1199 단어 sql
오류 코드:

String[] names = new String[]{'name1','name2','name3'};
StringBuffer buffer = new StringBuffer();
buffer.append(names[0]).append(",").append(names[1]).append(",").append(names[2]);
String sql = "select e.* from employee e where e.name in (?)";
rs = pstmt.excuteQuery(sql);
pstmt.setString(1,buffer.toString());

위의 sql 은 selecte. * from employee where e. namme in {name 1, name 2, name 3} 으로 번 역 됩 니 다.
이 {name 1, name 2, name 3} 은 하나의 변수 로 여 겨 집 니 다. 즉, 일련의 문자, 쉼표 도 문자 의 일부분 입 니 다.
그래서 데이터베이스 에 name 1, name 2, name 3 라 는 기록 이 있 는 지 확인 합 니 다.
정확 한 코드:

String[] names = new String[]{'name1','name2','name3'};
String sql = "select e.* from employee e where e.name in (?,?,?)";
rs = pstmt.excuteQuery(sql);
pstmt.setString(1,names[0]);
pstmt.setString(2,names[1]);
pstmt.setString(3,names[2]);

위의 sql 은 selecte. * from employee where e. namme in (name 1, name 2, name 3) 으로 번 역 됩 니 다.
데이터베이스 에서 name 1, name 2 또는 name 3 의 기록 이 있 는 지 확인 합 니 다.

좋은 웹페이지 즐겨찾기