Asked • 05/07/19

How can I get the SQL of a PreparedStatement?

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.)

1 Expert Answer

By:

Still looking for help? Get the right answer, fast.

Ask a question for free

Get a free answer to a quick problem.
Most questions answered within 4 hours.

OR

Find an Online Tutor Now

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.