我有一个带有以下方法签名的常规Java方法:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
它打开一个连接,PreparedStatement使用sql语句和queryParams可变长度数组中的参数构建一个a ,运行它,对进行缓存ResultSet(在中CachedRowSetImpl),关闭连接,并返回缓存的结果集。
PreparedStatement
queryParams
ResultSet
CachedRowSetImpl
我在记录错误的方法中有异常处理。我将sql语句记录为日志的一部分,因为它对调试非常有帮助。我的问题是,记录String变量会sql用?代替实际值记录模板语句。我想记录已执行(或尝试执行)的实际语句。
所以…有没有办法获取将由a运行的实际SQL语句PreparedStatement?(没有自己构建它。如果我找不到访问PreparedStatement'sSQL的方法,我可能最终会在自己的catches中最终构建它。)
PreparedStatement'sSQL
使用准备好的语句,没有“ SQL查询”:
但是,无论是在Java方面还是在数据库方面,都没有重建实际的实际SQL查询的方法。
因此,没有办法获取准备好的语句的SQL,因为没有这样的SQL。
出于调试目的,解决方案是: