Ich habe eine allgemeine Java-Methode mit der folgenden Methodensignatur:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Es öffnet eine Verbindung, erstellt eine PreparedStatement
mit der SQL-Anweisung und den Parametern im queryParams
Array variabler Länge, führt sie aus, speichert das ResultSet
(in a CachedRowSetImpl
) zwischen, schließt die Verbindung und gibt die zwischengespeicherte Ergebnismenge zurück.
Ich habe Ausnahmebehandlung in der Methode, die Fehler protokolliert. Ich protokolliere die SQL-Anweisung als Teil des Protokolls, da sie beim Debuggen sehr hilfreich ist. Mein Problem ist, dass die Protokollierung der String-Variablen sql
die Template-Anweisung mit? S anstelle der tatsächlichen Werte protokolliert. Ich möchte die tatsächliche Anweisung protokollieren, die ausgeführt wurde (oder versucht wurde, ausgeführt zu werden).
Also ... Gibt es eine Möglichkeit, die tatsächliche SQL-Anweisung abzurufen, die von a ausgeführt wird PreparedStatement
? ( Ohne es selbst zu erstellen. Wenn ich keinen Weg finde, auf PreparedStatement's
SQL zuzugreifen , werde ich es wahrscheinlich selbst in meinem catch
es erstellen.)