Запрос из PreparedStatement - PullRequest
       17

Запрос из PreparedStatement

0 голосов
/ 05 октября 2010

Есть ли способ получить запрос Oracle от PreparedStatement. Я знаю, что это невозможно, поэтому я не могу использовать log4jdbc или p6spy, поскольку это защищенное приложение, и использование этого создаст большие проблемы .. toString не будет работатькак я использую Oracle?Я также не могу изменить PreparedStatement на Statement.

Ответы [ 3 ]

2 голосов
/ 05 октября 2010

Если вам нужно только время отладки, вы можете использовать DebuggableStatement, следуя этой статье

1 голос
/ 05 октября 2010

Если вы просто хотите проверить оператор SQL, вы также можете перейти прямо к базе данных и проверить v$sql таблицу.

Там вы можете найти все sqls и другую информацию о запросе. Дополнительная информация: http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2113.htm

1 голос
/ 05 октября 2010

Я не думаю, что вы должны делать это таким образом, поскольку для этого не существует официально документированного API.

Если вы можете возиться с кодом, почему вы не можете использовать log4jdbc? Oracle JDBC также поддерживает 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);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...