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?