>데이터 베이스 >MySQL 튜토리얼 >MySQL ReadyStatement: 'executeQuery()'가 구문 오류로 인해 실패하는 이유는 무엇입니까?

MySQL ReadyStatement: 'executeQuery()'가 구문 오류로 인해 실패하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-11 15:26:41226검색

MySQL PreparedStatement: Why is `executeQuery()` Failing with a Syntax Error?

MySQL 준비된 명령문: executeQuery() 구문 오류 해결

MySQL과 함께 Java의 PreparedStatement을 사용할 때 흔히 발생하는 문제는 자리 표시자(SQLException) 근처의 SQL 구문 문제를 나타내는 ? 오류입니다. 이는 명령문을 잘못 실행하여 발생하는 경우가 많습니다.

문제:

PreparedStatement을 사용하는 Java 코드에서는 다음과 유사한 예외가 발생할 수 있습니다.

<code>... you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?'</code>

잘못된 접근 방식:

이 오류는 일반적으로 문자열 인수(예: SQL 쿼리 자체)와 함께 PreparedStatement을 사용하여 executeQuery()을 실행하려고 할 때 발생합니다.

<code class="language-java">statement.executeQuery(searchPerson); // Incorrect</code>

이는 searchPerson을 리터럴 SQL 문자열로 처리하고 PreparedStatement 내에 설정된 자리 표시자를 무시합니다.

올바른 해결책:

핵심은 PreparedStatement:에 전달된 매개변수 없이 executeQuery()

를 실행하는 것입니다.
<code class="language-java">statement.executeQuery(); // Correct</code>

매개변수는 PreparedStatement 호출 전에 setString(), setInt() 등을 사용하여 executeQuery()에 이미 바인딩되어 있습니다. 쿼리 문자열을 인수로 다시 제공하면 이 바인딩이 무시되고 구문 오류가 발생합니다. executeQuery() 단순히 미리 바인딩된 매개변수를 사용하여 명령문을 실행합니다.

위 내용은 MySQL ReadyStatement: 'executeQuery()'가 구문 오류로 인해 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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