J'ai une méthode Java générale avec la signature de méthode suivante:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Il ouvre une connexion, construit une PreparedStatement
à l'aide de l'instruction sql et des paramètres du queryParams
tableau de longueur variable, l'exécute, met en cache le ResultSet
(dans a CachedRowSetImpl
), ferme la connexion et renvoie le jeu de résultats mis en cache.
J'ai la gestion des exceptions dans la méthode qui enregistre les erreurs. Je consigne l'instruction sql dans le cadre du journal car elle est très utile pour le débogage. Mon problème est que la journalisation de la variable String sql
enregistre l'instruction de modèle avec des? Au lieu des valeurs réelles. Je veux enregistrer l' instruction réelle qui a été exécutée (ou qui a tenté d'exécuter).
Alors ... Existe-t-il un moyen d'obtenir l'instruction SQL réelle qui sera exécutée par un PreparedStatement
? ( Sans le construire moi-même. Si je ne trouve pas un moyen d'accéder au PreparedStatement's
SQL, je finirai probablement par le construire moi-même dans mon catch
es.)