So rufen Sie Werte von Bindungsparametern vom Oracle JDBC PreparedStatement-Objekt ab

Ich möchte die Protokollierung aller ausgeführten Anweisungen mit tatsächlichen Bindungsparametern implementieren, wenn Oracle JDBC verwendet wird. Und ich würde es vorziehen, dass ich eine solche Protokollierungsmethode erstellen könnte, indem ich nur das PreparedStatement-Objekt als Parameter übergebe.

Zum Beispiel habe ich PreparedStatement erstellt und einen Parameter gebunden

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

Jetzt möchte ich in der Lage sein, von ps die tatsächliche SQL-Anweisung "SELECT * FROM employee WHERE employee_id = 1" zu erhalten, die ich in die Protokolldatei einfügen könnte.

Bisher habe ich festgestellt, dass ich verwenden kann

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

bekommen

SELECT * FROM employees WHERE employe_id = ?

Jetzt brauche ich eine Möglichkeit, die Liste der aktuellen Bindevariablen von ps abzurufen, damit ich sie ersetzen kann. mit Bindeparameterwerten.

Ich habe versucht, in ps.getClass (). GetDeclaredFields () und ps.getClass (). GetSuperclass (). GetDeclaredFields () nachzuschauen, konnte aber bisher den Ort nicht finden, an dem Bind-Parameterwerte und ihre Typen gespeichert sind.

Irgendwelche Vorschläge, wo man sie sucht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage