如何在 Apache Derby 中从 JDBC 获取 SQL 查询?



我正在使用Apache Derby。我想从 JDBC 程序中提取查询。我知道这些行中的问题已经被问过了(我怎样才能得到一个准备好的语句的SQL?(。但这个问题是Apache Derby特有的。

PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM EMPLOYEE 
WHERE SALARY BETWEEN ? AND ?");
stmt.setInt(1, 1000);
stmt.setInt(2, 100000);

编辑

在上述代码片段的这一点之后,有没有办法在不执行数据库的情况下获取实际查询?

我不想在数据库中执行PreparedStatement,即不使用stmt.execute() or stmt.executeQuery()

我想,答案就是你提到的链接。

使用预准备语句,没有"SQL查询":

您有一个包含占位符的语句 它被发送到数据库服务器 并在那里准备 这意味着SQL语句被"分析",解析,一些表示它的数据结构在内存中准备 然后,你有绑定变量 发送到服务器 并执行预准备语句 -- 处理这些数据 但是没有重建一个真正的真正的SQL查询 - 无论是在Java端,还是在数据库端。

因此,没有办法获取准备好语句的 SQL - 因为没有这样的 SQL。

出于调试目的,解决方案是:

输出语句的代码,包括占位符和数据列表 或者"手动"构建"一些SQL查询。

最新更新