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