> 데이터 베이스 > MySQL 튜토리얼 > 내 Java 코드에서 '매개변수 인덱스가 범위를 벗어났습니다.' SQL 예외가 발생하는 이유는 무엇입니까?

내 Java 코드에서 '매개변수 인덱스가 범위를 벗어났습니다.' SQL 예외가 발생하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-27 00:48:17
원래의
662명이 탐색했습니다.

Why Does My Java Code Throw a

SQL 예외의 매개변수 인덱스가 범위를 벗어났습니다. 원인 및 해결 방법

"java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다. 범위(1 > 매개변수 수, 즉 0)"라는 오류가 발생하면 실망스러울 수 있습니다. 이 오류는 SQL 쿼리에 해당 매개변수에 해당하는 자리 표시자(?)가 없을 때 준비된 문에서 매개변수 값을 설정하려고 할 때 발생합니다.

오류 원인:

PreparedStatement에서 setXxx() 메서드를 사용하려고 시도했지만 SQL 쿼리 문자열에 지정된 매개변수에 필요한 자리 표시자가 없는 경우 이 오류가 발생합니다. index.

잘못된 코드의 예:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // This will fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
로그인 후 복사

해결책:

이 문제를 해결하려면 다음을 수행해야 합니다. 원하는 모든 매개 변수에 대한 자리 표시자(?)를 포함하도록 SQL 쿼리 문자열을 수정합니다. set.

수정된 코드의 예:

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부터 시작합니다. .
  • 뒤에 작은따옴표나 큰따옴표를 사용하지 마세요. 자리 표시자. 그렇게 하면 SQL 파서가 이를 문자열 값으로 해석하여 동일한 예외가 발생합니다.

추가 정보:

  • [JDBC Tutorial - 준비됨 성명](https://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/index.html#prepared)

위 내용은 내 Java 코드에서 '매개변수 인덱스가 범위를 벗어났습니다.' SQL 예외가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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