>Java >java지도 시간 >Java 데이터베이스 코드에서 '매개변수 인덱스가 범위를 벗어났습니다' 오류가 발생하는 이유는 무엇입니까?

Java 데이터베이스 코드에서 '매개변수 인덱스가 범위를 벗어났습니다' 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-13 01:51:10527검색

Why Am I Getting a

Java 데이터베이스의 매개변수 인덱스가 범위를 벗어남 오류

Java를 사용하여 데이터베이스와 상호작용하려고 하면 "java" 오류가 발생할 수 있습니다. .sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다(1 > 매개변수 개수, 즉 0)." 이 오류는 SQL 문과 해당 매개 변수에 제공된 값이 일치하지 않음을 나타냅니다.

원인:

PreparedStatement를 사용하여 매개 변수를 설정하려고 하면 오류가 발생합니다. 개체이지만 해당 SQL 문에는 해당 매개변수에 대한 자리 표시자(?)가 포함되어 있지 않습니다. 쿼리에 해당 자리 표시자 없이 setString() 또는 기타 setter 메서드를 사용하면 이 오류가 발생합니다.

해결책:

이 오류를 해결하려면 SQL 문이 PreparedStatement 개체를 통해 설정하려는 모든 매개 변수에 대한 자리 표시자가 포함되어 있습니다. 자리 표시자는 설명문에서 물음표(?)로 표시되어야 합니다.

예:

잘못된 설명:

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

올바른 설명:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";

추가 고려 사항:

  • 매개변수 인덱스는 1부터 시작하므로 명령문의 첫 번째 자리 표시자는 preparedStatement를 통해 설정한 첫 번째 매개변수에 할당되어야 합니다.
  • single 또는 double 사용을 피하세요. 자리 표시자를 따옴표로 묶어야 합니다. 이렇게 하면 따옴표가 아닌 문자열 값으로 해석됩니다. 자리 표시자.

추가 리소스:

  • [JDBC 자습서 - 준비된 명령문](https://docs.oracle.com/javase/tutorial /jdbc/basics/prepared.html)

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.