2012-07-26 8 views
4

가능한 중복 : PreparedStatement가 어떻게 보이는지 어떻게 알 수 있습니까?


How can I get the SQL of a PreparedStatement?

가 나는 PreparedStatement의 (PS)을하고 일부에서는 setString를 실행 (문자열 B를 INT) 거기에. 그런 다음 내 PS가 어떻게 생겼는지 어떻게 알 수 있습니까? 내가 당신을 이해한다면

+2

가능한 dupicate 2382532/how-can-i-get-the-sql-of-a-preparedstatement – Reimeus

+0

그것은 드라이버에 따라 다릅니다. 물론 http://stackoverflow.com/questions/2683214/get-query-from-java-sql-preparedstatement – betomontejo

+0

@Betoverse 아 물론 있습니다. 수년간 오라클과 협력해온 결과,이 벤더에 특유한 것을 잊어 버리고 표준을 오해 한 것 같습니다. 입력 해 주셔서 감사합니다. –

답변

4

, 당신은 같은가 someting 싶어 :

PreparedStatement pstmt = 
      connection.prepareStatement("insert into table tab(col) values(?)"); 
    pstmt.setString(1, "my string value"); 

을 다음과 같은 문자열을보고 싶어 :

"insert into table(col) values('my string value')" 

내가 당신의 의미를 잘 받았어을?

그렇다면 그렇게 할 수 없다고 생각합니다. 나는 그 문장이 매개 변수 값없이 미리 컴파일되어 있고 이것들은 별도로 보관되므로 다른 매개 변수로 문장을 재사용 할 수 있다고 생각한다.

할 수있는 일이 같은 매개 변수 메타 데이터를 검색하는 것입니다

ParameterMetaData pmd = pstmt.getParameterMetaData(); 

을 그리고 같은 물건을 호출 http://stackoverflow.com/questions/의

pmd.getParameterCount(); 
    pmd.getParameterClassName(1); 
    pmd.getParameterType(1); 
+0

네, 그렇게 할 수없는 것 같습니다. ParameterMetaData 및 ParameterMetaData 용 JavaDocs에서 원하는 것을 제공 할 수있는 메서드가 표시되지 않습니다. –

+0

어떤 데이터베이스를 사용하고 있습니까? 오라클, 더비, MySQL은 ...? Answer Betoverse는'System.out.println (pstmt);을 통해 명령문을 출력하려고 시도했다. –

+0

나는 MySql을 사용하고있다. –

관련 문제