Ich möchte die Protokollierung aller ausgeführten Anweisungen mit den tatsächlichen Bindungsparametern implementieren, wenn ich Oracle JDBC verwende. Und ich würde es vorziehen, dass ich eine solche Protokollierungsmethode erstellen könnte, die nur das PreparedStatement-Objekt als Parameter übergibt.
Zum Beispiel habe ich PreparedStatement erstellt und einen Parameter gebunden
%Vor%Nun würde ich gerne von ps die eigentliche SQL-Anweisung "SELECT * FROM employees WHERE employee_id = 1" bekommen, die ich in die Log-Datei schreiben könnte.
Bisher habe ich festgestellt, dass ich
verwenden kann %Vor%um
zu erhalten %Vor%Jetzt brauche ich einen Weg, um die Liste der aktuellen Bind-Variablen von ps zu bekommen, so dass ich ersetzen könnte? mit Bindeparameterwerten.
Ich habe versucht, in ps.getClass (). getDeclaredFields () und ps.getClass (). getSuperclass (). getDeclaredFields () zu suchen, konnte aber bisher den Ort nicht finden, an dem die Werte der Bindeparameter und deren Typen gespeichert sind.
Irgendwelche Vorschläge, wo Sie suchen können?
Die meisten Protokollierungs-Framework haben den Begriff geschachtelten Diagnosekontext . Sie können Ihre Abfrage und ihre Parameter dort speichern, wenn Sie die vorbereitete Anweisung ausfüllen.
Oder machen Sie es vielleicht in einem Schritt:
%Vor%