我有一个具有以下方法签名的通用Java方法:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
它打开一个连接,使用SQL语句和queryParams
可变长度数组中的参数构建一个PreparedStatement
,运行它,缓存ResultSet
(在CachedRowSetImpl
中),关闭连接,并返回缓存的结果集.
我在记录错误的方法中有异常处理.我将sql语句记录为日志(log)的一部分,因为它对调试非常有帮助.我的问题是,记录字符串变量sql
会记录模板语句,其中包含?'s而不是实际值.我想记录已执行(或试图执行)的actual语句.
所以有没有什么方法可以得到一个PreparedStatement
位用户将运行的实际SQL语句?(Without自己构建.如果我找不到访问PreparedStatement's
SQL的方法,我可能最终会在catch
E中自己构建它.)