【发布时间】:2011-01-23 20:42:01
【问题描述】:
我有一个具有以下方法签名的通用 Java 方法:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
它打开一个连接,使用 sql 语句和queryParams 可变长度数组中的参数构建一个PreparedStatement,运行它,缓存ResultSet(在CachedRowSetImpl 中),关闭连接,然后返回缓存的结果集。
我在记录错误的方法中有异常处理。我将 sql 语句记录为日志的一部分,因为它对调试非常有帮助。我的问题是记录字符串变量sql 使用?而不是实际值记录模板语句。我想记录已执行(或尝试执行)的 实际 语句。
那么...有什么方法可以得到PreparedStatement 运行的实际SQL 语句? (不自己构建它。如果我找不到访问PreparedStatement's SQL 的方法,我可能最终会在我的catches 中自己构建它。)
【问题讨论】:
-
如果您正在编写直接的 JDBC 代码,我强烈建议您查看 Apache commons-dbutils commons.apache.org/dbutils。它极大地简化了 JDBC 代码。
标签: java sql jdbc prepared-statement