在我的代码中,我正在使用java.sql.PreparedStatement.
java.sql.PreparedStatement
然后我执行该setString()方法来填充准备好的语句的通配符。
setString()
executeQuery()有没有办法让我在调用方法并执行查询之前检索(并打印出)最终查询?我只是想要这个用于调试目的。
executeQuery()
这在 JDBC API 合同中没有任何定义,但如果 幸运 的话,所讨论的 JDBC 驱动程序可能会通过调用PreparedStatement#toString(). IE
PreparedStatement#toString()
System.out.println(preparedStatement);
根据我的经验,目前这样做的至少是 PostgreSQL 8.x 和 MySQL 5.x JDBC 驱动程序。
如果你的 JDBC 驱动程序不支持它,你最好的办法是使用一个语句包装器,它记录对setXxx()方法的所有调用,最后toString()根据记录的信息填充一个 SQL 字符串。执行此操作的现有库是P6Spy。同时,向您的 JDBC 驱动程序的开发团队发布增强请求,并希望他们也能实现所需的toString()行为。
setXxx()
toString()