2013-03-21 3 views
12

Когда мы создаем PreparedStatement, мы используем '?' чтобы заменить их заданными параметрами.Как увидеть строку SQL PreparedStatement?

Как мы можем увидеть окончательную строку SQL после того, как эти параметры установлены?

+0

См.: [Как я могу получить SQL PreparedStatement?] (Http://stackoverflow.com/questions/2382532/how-can-i-get-the-sql-of-a-preparedstatement) – Reimeus

ответ

5

Самый простой способ (который работает с любым драйвером JDBC) заключается в использовании log4jdbc. Это прокси, который обертывает драйвер, создает читаемую строку SQL, комбинируя SQL и ее параметры и записывая ее в журнал, затем передает SQL и параметры на базовый драйвер.

11

Нет окончательной строки SQL, версия с заполнителями - это то, что фактически отправлено на сервер. Данные отправляются полностью отдельно от него при выполнении запросов в подготовленном операторе.

Вы можете записать строку с заполнителями, а затем каждый набор данных по отдельности.

Ваш код может объединить их в журнал для фактической строки SQL, если это то, что вы хотите:

String query = "SELECT a FROM b WHERE c = ?"; 

... 

pstmt.setString(1, "asd"); 
logSQL(query, "asd"); 

logSQL затем фактически войти "SELECT a FROM b WHERE c = 'asd'". Could be that someone has actually implemented this before...

Смежные вопросы