小编典典

从 java.sql.PreparedStatement 获取查询

all

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

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

executeQuery()有没有办法让我在调用方法并执行查询之前检索(并打印出)最终查询?我只是想要这个用于调试目的。


阅读 60

收藏
2022-08-03

共1个答案

小编典典

这在 JDBC API 合同中没有任何定义,但如果 幸运 的话,所讨论的 JDBC
驱动程序可能会通过调用PreparedStatement#toString(). IE

System.out.println(preparedStatement);

根据我的经验,目前这样做的至少是 PostgreSQL 8.x 和 MySQL 5.x JDBC 驱动程序。

如果你的 JDBC
驱动程序不支持它,你最好的办法是使用一个语句包装器,它记录对setXxx()方法的所有调用,最后toString()根据记录的信息填充一个 SQL
字符串。执行此操作的现有库是P6Spy。同时,向您的 JDBC
驱动程序的开发团队发布增强请求,并希望他们也能实现所需的toString()行为。

2022-08-03