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 PreparedStatementusando a instrução sql e os parâmetros na queryParamsmatriz de comprimento variável, a executa, armazena ResultSetem 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 sqlregistra 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'sSQL, provavelmente acabarei construindo ele mesmo em meus catches.)