2012-12-07 120 views
3

假设我的查询是这样的,在这里conn是连接对象:如何打印Java预处理语句中的绑定变量。

String countrycode=91;//it is dynamic in my case 
String query = "update tblemployeedata set countrycode='?'; 
PreparedStatement pstmtUpdate = conn.prepareStatement(query); 
pstmtUpdate.setString(1,countrycode); 

现在上述国家代码设置后,我希望看到形成像

update tblemployeedata set countrycode='91'; 

pstmtUpdate.executeUpdate(); 

回答

0

您可以使用pstmtUpdate.toString()方法我的实际查询查看在准备好的语句中设置参数后进行的实际查询。

+0

这个查询将不会打印接收到的参数,它会打印?而不是params。 –

+0

@BhavikAmbani否,它将打印参数值,如果它们在调用'toString'方法之前已经设置。 – Abubakkar

+1

@阿布。它不会打印至少不在我的情况。在我的情况下它是打印:: [email protected] – Prateek

-2

您可以通过以下方式获取查询的价值。

Class stmt1 = pstmtUpdate.getClass(); 
java.lang.reflect.Field mem = stmt1.getField("sql"); 
String value= (String)mem.get(pstmt); 

希望这将帮助你

+0

OP想查看'update tblemployeedata set countrycode = '91';'(整个查询)而不是'91'(设置的值) – Abubakkar

+0

我的答案将打印完整查询,查询的设置值为 –

+1

它给了我没有这样的字段异常。你可以详细说明这个例子更多 – Prateek