Eu tenho um método Java geral com a seguinte assinatura de método:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Ele abre uma conexão, cria um PreparedStatement
usando a instrução sql e os parâmetros na queryParams
matriz de comprimento variável, a executa, armazena ResultSet
em cache o (em a CachedRowSetImpl
), fecha a conexão e retorna o conjunto de resultados em cache.
Eu tenho manipulação de exceção no método que registra erros. Registro a instrução sql como parte do log, pois é muito útil para depuração. Meu problema é que o registro da variável String sql
registra a instrução do modelo com? Em vez de valores reais. Quero registrar a instrução real que foi executada (ou tentou executar).
Então ... Existe alguma maneira de obter a instrução SQL real que será executada por um PreparedStatement
? ( Sem construí-lo eu mesmo. Se não conseguir encontrar uma maneira de acessar o PreparedStatement's
SQL, provavelmente acabarei construindo ele mesmo em meus catch
es.)