I have a general Java method with the following method signature:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
It opens a connection, builds a `PreparedStatement` using the sql statement and the parameters in the `queryParams` variable length array, runs it, caches the `ResultSet` (in a `CachedRowSetImpl`), closes the connection, and returns the cached result set.
I have exception handling in the method that logs errors. I log the sql statement as part of the log since it's very helpful for debugging. My problem is that logging the String variable `sql` logs the template statement with ?'s instead of actual values. I want to log the *actual* statement that was executed (or tried to execute).
So... Is there any way to get the actual SQL statement that will be run by a `PreparedStatement`? (*Without* building it myself. If I can't find a way to access the `PreparedStatement's` SQL, I'll probably end up building it myself in my `catch`es.)