Когда мы создаем PreparedStatement, мы используем '?' чтобы заменить их заданными параметрами.
Как мы можем увидеть окончательную строку SQL после того, как эти параметры установлены?
Ответ 1
Самый простой способ (который работает с любым драйвером JDBC) - использовать log4jdbc. Это прокси-сервер, который обертывает драйвер, создает читаемую строку SQL, комбинируя SQL и ее параметры и записывая ее в журнал, затем передает SQL и параметры на базовый драйвер.
Ответ 2
Нет окончательной строки SQL, версия с заполнителями - это то, что фактически отправлено на сервер. Данные отправляются полностью отдельно от него при выполнении запросов в подготовленном операторе.
Вы можете записать строку с заполнителями, а затем каждый набор данных по отдельности.
Ваш код мог бы объединить их в журнале с фактической строкой SQL, если это вам нужно:
String query = "SELECT a FROM b WHERE c = ?";
...
pstmt.setString(1, "asd");
logSQL( query, "asd");