집 >데이터 베이스 >MySQL 튜토리얼 >MySQL ReadyStatement: 'executeQuery()'가 구문 오류로 인해 실패하는 이유는 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!