>Java >java지도 시간 >MySQL ReadyStatement 구문 오류: `executeQuery()`가 `?` 자리 표시자로 인해 실패하는 이유는 무엇입니까?

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

Susan Sarandon
Susan Sarandon원래의
2024-12-06 07:30:111044검색

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

MySQL 구문 오류: preparedStatement 구문 이해

PreparedStatement를 사용하여 쿼리를 실행하는 Java 코드에 MySQL 구문 오류가 발생했습니다(오류 번호 1064). 이 오류는 일반적으로 SQL 구문 자체에 문제가 있을 때 발생합니다.

오류 원인 식별:

제공된 코드는 SQL 구문 자체에 문제가 있음을 보여줍니다. "?"로 표시되는 자리 표시자가 포함된 쿼리를 실행합니다. MySQL은 "?"를 해석하지 않습니다. 문자를 자리 표시자로 사용하고 대신 SQL 문의 일부로 처리합니다.

해결책: Argumentless ExecutionQuery() 메서드 활용

문제를 해결하려면 다음을 사용해야 합니다. 쿼리 문자열을 인수.

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, 2);
s.setString(2, "zen");
ResultSet rs = s.executeQuery(); // Correct syntax

executeQuery()에서 쿼리 문자열을 생략하면 준비된 문이 제공된 매개변수 값을 사용하여 이전에 정의된 쿼리를 실행할 수 있게 됩니다.

주의 : 리소스 누출

귀하의 코드에는 현재 리소스 할당 및 할당 취소를 적절하게 처리하는 기능이 부족합니다. try 블록의 finally 블록에서 획득한 모든 리소스(Connection, State, ResultSet)를 닫는 JDBC 관용구를 사용하는 것이 좋습니다. 그렇지 않으면 애플리케이션이 시간이 지남에 따라 데이터베이스 리소스를 소진하여 불안정해질 수 있습니다.

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

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