Como obter valores de parâmetros de ligação do objeto Oracle JDBC PreparedStatement

Eu quero implementar o log de todas as instruções executadas com parâmetros de ligação reais ao usar o Oracle JDBC. E eu preferiria que eu pudesse criar esse método de log apenas passando o objeto PreparedStatement como parâmetro.

Por exemplo, eu criei o PreparedStatement e limitei um parâmetro

PreparedStatement ps = conn.prepareStatement(
    "SELECT * FROM employees WHERE employee_id = ?");
ps.setInt(1,1);

Agora eu gostaria de poder obter do ps a instrução SQL real "SELECT * FROM dos funcionários WHERE employe_id = 1" que eu poderia colocar no arquivo de log.

Até agora eu descobri que posso usar

((oracle.jdbc.driver.OracleStatement) ps).getOriginalSql()

para obter

SELECT * FROM employees WHERE employe_id = ?

Agora eu preciso de alguma maneira para obter a lista de variáveis ​​de vinculação atuais de ps para que eu pudesse substituir? com valores de parâmetro de vinculação.

Eu tentei olhar em ps.getClass (). GetDeclaredFields () e ps.getClass (). GetSuperclass (). GetDeclaredFields (), mas até agora não consegui encontrar o lugar onde os valores de parâmetro de ligação e seus tipos são armazenados.

Alguma sugestão onde procurá-los?

questionAnswers(2)

yourAnswerToTheQuestion