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