一尘不染

从java.sql.PreparedStatement获取查询

java

在我的代码中,我正在使用java.sql.PreparedStatement

然后,我执行该setString()方法以填充准备好的语句的通配符。

executeQuery()调用该方法并执行查询之前,我是否有办法检索(并打印出)最终查询?我只想将此用于调试目的。


阅读 624

收藏
2020-03-09

共1个答案

一尘不染

这在JDBC API合同中没有定义,但是如果幸运的话,有问题的JDBC驱动程序可以通过调用来返回完整的SQL PreparedStatement#toString()。即

System.out.println(preparedStatement);

以我的经验,至少这样做是PostgreSQL 8.x和MySQL 5.x JDBC驱动程序。对于你的JDBC驱动程序不支持的情况,最好的选择是使用语句包装器,该包装器记录所有setXxx()方法,最后toString()根据记录的信息填充SQL字符串。例如Log4jdbc或P6Spy。

2020-03-09