Tengo un método Java general con la siguiente firma de método:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Abre una conexión, construye PreparedStatement
usando la instrucción sql y los parámetros en la queryParams
matriz de longitud variable, la ejecuta, almacena ResultSet
en caché el (en a CachedRowSetImpl
), cierra la conexión y devuelve el conjunto de resultados en caché.
Tengo manejo de excepciones en el método que registra errores. Registro la instrucción sql como parte del registro, ya que es muy útil para la depuración. Mi problema es que el registro de la variable String sql
registra la declaración de la plantilla con? 'S en lugar de valores reales. Quiero registrar la declaración real que se ejecutó (o intentó ejecutar).
Entonces ... ¿Hay alguna forma de obtener la declaración SQL real que ejecutará un PreparedStatement
? ( Sin construirlo yo mismo. Si no puedo encontrar una manera de acceder al PreparedStatement's
SQL, probablemente terminaré construyéndolo yo mismo catch
).