我有一个通用的Java方法,具有以下方法签名:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
它打开一个连接,使用sql语句和queryParams
变量长度数组中的参数构建一个PreparedStatement
,运行它,将ResultSet
(在CachedRowSetImpl
中缓存)保存,关闭连接,并返回缓存的结果集。我在这个方法中有异常处理,记录错误日志。由于SQL语句对于调试非常有用,因此我将SQL语句作为日志的一部分进行记录。我的问题是,记录String变量
sql
会记录带有?的模板语句而不是实际值。我想记录被执行(或尝试执行)的实际语句。那么... 有没有办法获取将由
PreparedStatement
运行的实际SQL语句? (不必自己构建。如果我找不到访问PreparedStatement
SQL的方法,我最终可能会在我的catch
块中自己构建它。)