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