У меня есть общий метод Java со следующей сигнатурой метода:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Открывает соединение, создает PreparedStatement с помощью оператора sql и параметров в массиве переменной длины queryParams, запускает его, кэширует ResultSet (в CachedRowSetImpl), закрывает соединение и возвращает кешированный результирующий набор.
У меня есть обработка исключений в методе, который регистрирует ошибки. Я регистрирую SQL-запрос как часть журнала, так как он очень полезен для отладки. Моя проблема заключается в том, что ведение журнала переменной String sql регистрирует оператор шаблона с помощью? вместо фактических значений. Я хочу записать фактический оператор, который был выполнен (или попытался выполнить).
Итак... Есть ли способ получить фактический оператор SQL, который будет выполняться с помощью PreparedStatement? (Не создавая его самостоятельно.Если я не могу найти способ доступа к SQL PreparedStatement's, я, вероятно, в конечном итоге создам его в своих catch es.)