Quando creiamo un PreparedStatement usiamo "?" i caratteri verranno quindi sostituiti dai parametri impostati.Come vedere la stringa SQL di PreparedStatement?
Come possiamo vedere la stringa SQL finale dopo aver impostato questi parametri?
Quando creiamo un PreparedStatement usiamo "?" i caratteri verranno quindi sostituiti dai parametri impostati.Come vedere la stringa SQL di PreparedStatement?
Come possiamo vedere la stringa SQL finale dopo aver impostato questi parametri?
Il modo più semplice (che funziona con qualsiasi driver JDBC) è utilizzare log4jdbc. È un proxy che avvolge il driver, crea una stringa SQL leggibile combinando l'SQL ei suoi parametri e lo registra, quindi passa SQL e i parametri sul driver sottostante.
Non esiste una stringa SQL finale, la versione con segnaposti è ciò che viene effettivamente inviato al server. I dati vengono inviati completamente separatamente da esso mentre si eseguono query sull'istruzione preparata.
È possibile registrare la stringa con segnaposto e quindi ogni set di dati singolarmente.
Il vostro codice potrebbe combinarle nel registro per una stringa SQL effettiva se è questo ciò che si vuole:
String query = "SELECT a FROM b WHERE c = ?";
...
pstmt.setString(1, "asd");
logSQL(query, "asd");
logSQL
sarebbe poi effettivamente il login "SELECT a FROM b WHERE c = 'asd'"
. Could be that someone has actually implemented this before...
Vedere: [Come posso ottenere l'SQL di un PreparedStatement?] (Http://stackoverflow.com/questions/2382532/how-can-i-get-the-sql-of-a-preparedstatement) – Reimeus