gpt4 book ai didi

java - 有没有办法在构造完成后读取PreparedStatement 的SQL 查询?

转载 作者:行者123 更新时间:2023-12-02 00:38:44 25 4
gpt4 key购买 nike

我正在处理一些非常旧的代码(10 年以上),并且(可能)实际上不可能获得将要执行的查询,但我需要记录查询以防出现错误。

我尝试读取该语句的元数据。但当我尝试获取确切的查询时,这并不能完成任务。

System.out.println(preparedStatement); 也不起作用,因为我们使用了一个非常旧的 JDBC 驱动程序,它没有为已准备好声明,并且我不允许更改驱动程序。

public void doQuery(Connection conn) throws SQLException {
PreparedStatement st=null;
ResultSet result=null;
st=createStatement(conn);
result = st.executeQuery();
...
}

public abstract PreparedStatement createStatement(Connection conn) throws SQLException;

createStatement 是一个抽象方法,有 46 个(神奇的)实现,它们都是不同的。这就是为什么我很难弄清楚 Statement 是如何创建的。

我只想拥有类似的东西

String query = preparedStatement.getQueryString();

最佳答案

很久以前我用过 p6spy :真实 JDBC 驱动程序的代理,在将真实查询传递给真实驱动程序之前记录真实查询。

另一个解决方案是 datasource-proxy顾名思义,它代理数据源,而不是低级驱动程序。我从来没有尝试过。

关于java - 有没有办法在构造完成后读取PreparedStatement 的SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57956636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com