从PreparedStatement查询

时间:2010-10-05 05:09:38

标签: java oracle prepared-statement

有没有办法从PreparedStatement获取Oracle查询。我知道它不可能这样我不能使用log4jdbc或p6spy,因为它是一个安全的应用程序,使用它会产生更大的问题.. toString将无法正常工作因为我正在使用Oracle?我也无法将PreparedStatement更改为Statement。

3 个答案:

答案 0 :(得分:2)

如果只需要调试时间,那么您可以按照此article

使用DebuggableStatement

答案 1 :(得分:1)

我认为你不应该这样做,因为没有官方记录的API。

如果你可以搞乱代码,为什么不能使用log4jdbc? Oracle JDBC也是supports java.util.logging,您可以尝试启用它。

如果您只对SQL本身感兴趣,可以在Oracle服务器上启用会话跟踪。

或许您可以将代码放到准备语句的位置(使用像@pinichi这样的建议)?

但只是为了好玩,用调试器,我的Oracle JDBC版本,我可以做到

  if (stmt instanceof oracle.jdbc.driver.OraclePreparedStatement) {
        String x = ((oracle.jdbc.driver.OraclePreparedStatement) stmt)
             .getOriginalSql();
        System.out.println(x);
  }

答案 2 :(得分:1)

如果您只想查看SQL语句,还可以直接访问数据库并检查v$sql表。

在那里,您可以找到有关查询的所有sqls和其他信息。更多信息:http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2113.htm