小编Rai*_*kis的帖子

如何从Oracle JDBC PreparedStatement对象获取绑定参数的值

我想在使用Oracle JDBC时使用实际绑定参数实现所有已执行语句的日志记录.我希望我可以创建这样的日志记录方法,只传递PreparedStatement对象作为参数.

例如,我创建了PreparedStatement并绑定了一个参数

PreparedStatement ps = conn.prepareStatement(
    "SELECT * FROM employees WHERE employee_id = ?");
ps.setInt(1,1);
Run Code Online (Sandbox Code Playgroud)

现在我希望能够从ps获取我可以放在日志文件中的实际SQL语句"SELECT*FROM employees WHERE employe_id = 1".

到目前为止,我发现我可以使用

((oracle.jdbc.driver.OracleStatement) ps).getOriginalSql()
Run Code Online (Sandbox Code Playgroud)

要得到

SELECT * FROM employees WHERE employe_id = ?
Run Code Online (Sandbox Code Playgroud)

现在我需要一些方法来从ps获取当前绑定变量的列表,以便我可以替换?使用绑定参数值.

我试着查看ps.getClass().getDeclaredFields()和ps.getClass().getSuperclass().getDeclaredFields()但到目前为止找不到存储绑定参数值及其类型的位置.

有什么建议在哪找?

java oracle jdbc

9
推荐指数
1
解决办法
9526
查看次数

标签 统计

java ×1

jdbc ×1

oracle ×1