>데이터 베이스 >MySQL 튜토리얼 >'java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다.'가 나타나는 이유는 무엇입니까?

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

Susan Sarandon
Susan Sarandon원래의
2024-12-24 00:24:20918검색

Why Am I Getting

java.sql.SQLException: 매개변수 인덱스가 범위를 벗어났습니다(1 > 매개변수 개수, 즉 0)

이 오류가 발생합니다. SQL에 해당 자리 표시자가 없는 준비된 문에 매개 변수를 설정하려고 할 때 query.

원인:

  • SQL 쿼리에 문에 설정되는 매개 변수 수에 비해 충분한 자리 표시자(?)가 포함되어 있지 않습니다.
  • 매개변수화되지 않은 매개변수화된 명령문을 실수로 사용하고 있습니다.

해결책:

이 오류를 해결하려면 SQL 쿼리에 설정 중인 매개 변수에 대한 올바른 수의 자리 표시자가 포함되어 있는지 확인하세요. 예:

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);

추가 참고 사항:

  • 매개변수 인덱스는 1부터 시작하므로 올바른 순서로 설정했는지 확인하세요.
  • SQL 쿼리에서 자리 표시자를 인용하지 마십시오. 인용하면 문자열로 처리됩니다. 값.
  • 매개변수가 없는 쿼리를 사용하는 경우 쿼리 문자열에서 직접 매개변수를 설정해야 합니다.
String sql = String.format("INSERT INTO tablename (col1, col2, col3) VALUES (%s, %s, %s)", val1, val2, val3);

참조:

  • JDBC 튜토리얼 - 준비된 진술: https://docs.oracle.com/javase/tutorial/jdbc/preparedstatements.html

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

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