PreparedStatement에 의해 실행된 실제 SQL 가져오기
Java 프로그래밍에서는 데이터베이스 연결을 열고 PreparedStatement를 실행하고 결과 세트를 반환합니다. 디버깅 목적의 경우 실행된 실제 SQL 문을 기록하는 것이 도움이 되지만 단순히 원본 SQL 템플릿(자리 표시자 포함)을 기록하는 것만으로는 충분하지 않습니다.
PreparedStatement의 SQL을 가져올 수 없습니다
안타깝게도 준비된 문의 특성상 실제로 실행될 SQL 쿼리를 검색할 수 있는 방법은 없습니다. 준비된 명령문은 명령문 자체(자리 표시자 포함)와 바인딩된 변수라는 두 가지 구성 요소로 나뉩니다. 데이터베이스 서버는 문장을 분석하고 구문 분석하며, 바인딩된 변수는 문장을 실행하는 데 사용됩니다. 그러나 Java 측이나 데이터베이스 측에서는 실제 SQL 쿼리 재구성이 발생하지 않습니다.
디버깅 대안
디버깅 목적으로 두 가지 대체 솔루션이 있습니다.
예
자리 표시자가 있는 명령문을 고려하세요.
SELECT * FROM USERS WHERE ID = ?
바인딩된 변수:
int userId = 123;
수동 SQL 쿼리는 다음과 같습니다.
SELECT * FROM USERS WHERE ID = 123
디버깅 목적으로 기록됩니다.
위 내용은 Java에서 preparedStatement에 의해 실행된 실제 SQL을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!