Wie Werte von Bindeparametern vom Oracle JDBC PreparedStatement-Objekt abgerufen werden

9

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?

    
Raimonds Simanovskis 15.07.2009, 11:34
quelle

2 Antworten

2

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%     
akarnokd 15.07.2009 11:47
quelle
1

Sie können sich p6spy ansehen, es ist ein Proxy für Ihren Datenbanktreiber, der Überwachung und Protokollierung ermöglicht.

    
HeDinges 15.07.2009 11:55
quelle

Tags und Links