> Java > java지도 시간 > 내 ReadyStatement에서 'java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다.'라는 메시지가 나타나는 이유는 무엇입니까?

내 ReadyStatement에서 'java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다.'라는 메시지가 나타나는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-18 12:12:15
원래의
558명이 탐색했습니다.

Why Do I Get

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 파서가 이를 실제 문자열 값으로 해석하여 매개변수 바인딩을 방지합니다.

추가 리소스:

  • [JDBC 튜토리얼 - 준비됨 명령문](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)

위 내용은 내 ReadyStatement에서 'java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다.'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿