2012-09-13 6 views
4
StringBuilder sqlQry = new StringBuilder(); 
sqlQry.append("SELECT LIB, PATH") 
.append(" FROM OBJ") 
.append(" INNER JOIN SRC ON SRC.MBR = OBJ.LOBJ") 
.append(" WHERE TYPE = '*PGM'") 
.append(" AND SRC.PATH LIKE '").append("?").append("%'"); 

PreparedStatement ps = accssConn.prepareStatement(sqlQry.toString()); 
ps.setString(1, path); 

rs = ps.executeQuery(); 

안녕 모두, 나는 예외 다음 얻고있다선택 쿼리를 위해 준비된 문을 사용하는 동안 SQL 예외를 얻기

[jcc][10145][10844][3.63.123] Invalid parameter 1: Parameter index is out of range. ERRORCODE=-4461, SQLSTATE=42815 

열 제한이 255이고 경로 = "는 C : \ 문서 및 설정 \ XYZ \ 데스크톱 \ xyzs "및 그것을 잘 statement.So, 왜 그것은 준비된 문에서 예외를 throw하는 이유입니다 실행됩니다.

답변

3
StringBuilder sqlQry = new StringBuilder(); 

sqlQry.append("SELECT LIB, PATH") 
.append(" FROM OBJ") 
.append(" INNER JOIN SRC ON SRC.MBR = OBJ.LOBJ") 
.append(" WHERE TYPE = '*PGM'") 
.append(" AND SRC.PATH LIKE ").append("?"); 

PreparedStatement ps = accssConn.prepareStatement(sqlQry.toString()); 

ps.setString(1, path + "%"); 
0

작은 따옴표를 확인하십시오. 그 중 하나에 닫는 따옴표가 없습니다. 작은 따옴표를 큰 따옴표로 바꾸고 그것들을 \ "* PGM \"처럼 이스케이프시켜보십시오.

관련 문제