【发布时间】:2010-11-10 23:32:06
【问题描述】:
我想在使用 Oracle JDBC 时使用实际绑定参数实现所有已执行语句的日志记录。而且我希望我可以创建这样的日志记录方法,只将 PreparedStatement 对象作为参数传递。
例如我创建了 PreparedStatement 并绑定了一个参数
PreparedStatement ps = conn.prepareStatement(
"SELECT * FROM employees WHERE employee_id = ?");
ps.setInt(1,1);
现在我希望能够从 ps 中获取可以放入日志文件的实际 SQL 语句“SELECT * FROM employees WHERE employee_id = 1”。
到目前为止我发现我可以使用
((oracle.jdbc.driver.OracleStatement) ps).getOriginalSql()
得到
SELECT * FROM employees WHERE employe_id = ?
现在我需要一些方法来从 ps 获取当前绑定变量的列表,以便我可以替换 ?带有绑定参数值。
我试图查看 ps.getClass().getDeclaredFields() 和 ps.getClass().getSuperclass().getDeclaredFields() 但到目前为止找不到存储绑定参数值及其类型的位置。
有什么建议可以去哪里找?
【问题讨论】: