Ich habe eine allgemeine Java-Methode mit der folgenden Methodensignatur:
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
Es öffnet eine Verbindung, erstellt eine PreparedStatementmit der SQL-Anweisung und den Parametern im queryParamsArray 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 sqldie 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'sSQL zuzugreifen , werde ich es wahrscheinlich selbst in meinem catches erstellen.)