Mam ogólną metodę Java z następującą sygnaturą metody:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Otwiera połączenie, buduje za PreparedStatement
pomocą instrukcji sql i parametrów w queryParams
tablicy o zmiennej długości, uruchamia je, buforuje ResultSet
(w a CachedRowSetImpl
), zamyka połączenie i zwraca zbuforowany zestaw wyników.
Mam obsługę wyjątków w metodzie, która rejestruje błędy. Loguję instrukcję sql jako część dziennika, ponieważ jest ona bardzo pomocna przy debugowaniu. Mój problem polega na tym, że rejestrowanie zmiennej String sql
rejestruje instrukcję szablonu z? Zamiast rzeczywistych wartości. Chcę zarejestrować rzeczywistą instrukcję, która została wykonana (lub próbowała wykonać).
Więc ... Czy istnieje sposób, aby uzyskać rzeczywistą instrukcję SQL, która zostanie uruchomiona przez PreparedStatement
? ( Bez budowania go samodzielnie. Jeśli nie mogę znaleźć sposobu na uzyskanie dostępu do PreparedStatement's
SQL, prawdopodobnie utworzę go samodzielnie w moich catch
es).