Comment puis-je obtenir le SQL d'une PreparedStatement?

J'ai une méthode en Java avec la signature de méthode suivante:

private static ResultSet runSQLResultSet(String sql, Object... queryParams)

L'ouverture d'une connexion, construit une PreparedStatement à l'aide de l'instruction sql et les paramètres de la queryParams de longueur variable tableau, l'exécute, met la ResultSet (dans un CachedRowSetImpl), ferme la connexion, et retourne le jeu de résultats du cache.

J'ai la manipulation d'exception dans la méthode qui enregistre les erreurs. J'journal de l'instruction sql en tant que partie du journal, car il est très utile pour le débogage. Mon problème est que l'enregistrement de la variable de Chaîne sql journaux le modèle de déclaration ?'s au lieu des valeurs réelles. Je veux ouvrir une session le réelle instruction a été exécutée (ou essayé de l'exécuter).

Alors... Est-il possible d'obtenir le véritable instruction SQL qui sera exécutée par un PreparedStatement? (Sans le construire moi-même. Si je ne peux pas trouver un moyen d'accéder à la PreparedStatement's SQL, je vais probablement jusqu'à la fin de la construire moi-même dans mon catches.)

InformationsquelleAutor froadie | 2010-03-04