SQLException: 매개변수 인덱스가 범위를 벗어났습니다
매개변수화된 SQL 쿼리를 실행할 때 "java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다." 이 문제는 쿼리에 지정된 매개변수 수와 preparedStatement에 전달된 실제 매개변수 수가 일치하지 않기 때문에 발생합니다.
원인:
이 오류는 쿼리에 지정된 매개변수 수를 시도할 때 발생합니다. preparedStatement에서 setXxx() 메서드를 사용하여 매개변수 값을 설정했지만 SQL 쿼리에 해당 자리 표시자(?)가 포함되어 있지 않습니다. 매개변수.
해결책:
이 문제를 해결하려면 SQL 쿼리에 올바른 수의 자리 표시자가 포함되어 있는지 확인하세요. 매개변수 인덱스는 1로 시작하고 각 자리 표시자(?)는 setXxx() 메서드를 사용하여 설정해야 하는 특정 매개변수를 나타냅니다.
예:
// Assuming "val1", "val2", and "val3" are valid values String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, val1); preparedStatement.setString(2, val2); preparedStatement.setString(3, val3);
피하세요. 자리 표시자 인용:
SQL에서 자리 표시자를 인용해서는 안 된다는 점에 유의하는 것이 중요합니다. 쿼리. 이를 인용하면 SQL 파서가 이를 실제 문자열 값으로 해석하여 매개변수 바인딩을 방지합니다.
추가 리소스:
위 내용은 내 ReadyStatement에서 'java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다.'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!