반응형
java.sql.SQLException 매개 변수 인덱스가 범위를 벗어남(1 > 매개 변수 수, 즉 0)
선택한 콤보 상자를 확인한 후 데이터베이스에 삽입할 수 없습니다.Tomcat에서 다음 오류가 발생합니다.
java.sql.SQLException: 매개 변수 인덱스가 범위를 벗어났습니다(1 > 매개 변수 수, 즉 0).
이것은 어떻게 발생하고 어떻게 해결할 수 있습니까?
다음 중 하나를 호출하면 이 오류가 발생합니다.setXxx()
에 대한 방법.PreparedStatement
SQL 쿼리 문자열에 자리 표시자가 없는 경우?
이를 위하여
예를 들어, 이것은 잘못된 것입니다.
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
자리 표시자를 지정하려면 SQL 쿼리 문자열을 수정해야 합니다.
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
매개 변수 인덱스는 다음으로 시작합니다.1
이러한 자리 표시자를 다음과 같이 인용할 필요는 없습니다.
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";
그렇지 않으면 SQL 파서가 실제 문자열 값으로 해석하여 자리 표시자를 더 이상 찾을 수 없기 때문에 동일한 예외가 계속 발생합니다.
참고 항목:
이 문제는 jdbc Driver 버전과 관련된 문제입니다.mysql-connector-java-commercial-5.0.3-bin.jar를 사용할 때 이 문제가 발생했지만 최신 드라이버 버전인 mysql-connector-java-5.1.22.jar로 변경했을 때 문제가 해결되었습니다.
언급URL : https://stackoverflow.com/questions/10896151/java-sql-sqlexception-parameter-index-out-of-range-1-number-of-parameters-wh
반응형
'programing' 카테고리의 다른 글
"typedef"에 대한 구문 규칙 및 범위를 설명하십시오. (0) | 2023.07.26 |
---|---|
로컬 변수에 액세스할 수 있는 node.js의 외부 js 파일을 로드하고 실행하시겠습니까? (0) | 2023.07.26 |
데이터베이스 열의 비트 플래그에 대한 단점은 무엇입니까? (0) | 2023.07.21 |
오래된 값을 사용하는 트랜잭션 내에서 실행되는 스프링 네이티브 쿼리 (0) | 2023.07.21 |
Oracle 11g은 정규식으로 일치하는 모든 항목을 가져옵니다. (0) | 2023.07.21 |