Ho un metodo Java generale con la seguente firma del metodo:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Apre una connessione, crea un PreparedStatement
usando l'istruzione sql e i parametri nella queryParams
matrice di lunghezza variabile, la esegue, memorizza nella cache ResultSet
(in a CachedRowSetImpl
), chiude la connessione e restituisce il set di risultati memorizzato nella cache.
Ho una gestione delle eccezioni nel metodo che registra gli errori. Registro l'istruzione sql come parte del registro poiché è molto utile per il debug. Il mio problema è che la registrazione della variabile String sql
registra l'istruzione template con? 'Anziché i valori effettivi. Voglio registrare l' istruzione effettiva che è stata eseguita (o tentata di eseguire).
Quindi ... C'è un modo per ottenere l'istruzione SQL effettiva che verrà eseguita da un PreparedStatement
? ( Senza costruirlo da solo. Se non riesco a trovare un modo per accedere a PreparedStatement's
SQL, probabilmente finirò per costruirlo da solo catch
.