在我的代码中,我正在使用java.sql.PreparedStatement。
java.sql.PreparedStatement
然后,我执行该setString()方法以填充准备好的语句的通配符。
setString()
在executeQuery()调用该方法并执行查询之前,我是否有办法检索(并打印出)最终查询?我只想将此用于调试目的。
executeQuery()
这在JDBC API合同中没有定义,但是如果幸运的话,有问题的JDBC驱动程序可以通过调用来返回完整的SQL PreparedStatement#toString()。即
PreparedStatement#toString()
System.out.println(preparedStatement);
以我的经验,至少这样做是PostgreSQL 8.x和MySQL 5.x JDBC驱动程序。对于你的JDBC驱动程序不支持的情况,最好的选择是使用语句包装器,该包装器记录所有setXxx()方法,最后toString()根据记录的信息填充SQL字符串。例如Log4jdbc或P6Spy。
setXxx()
toString()