Parametrisierte Abfragen (C#, Oracle): Wie, um mehr zu produzieren lesbare Darstellung?

Ich verwende parametrisierte Abfragen, in meinem C# - code für die Interaktion mit einer Oracle-Datenbank. Was kann ich tun, um log-Anweisungen in einer besser lesbaren Mode?

Angenommen ich habe eine parametrisierte Abfrage wie:

INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate)

Idealerweise würde ich gerne sehen, der log-Eintrag mit allen Parametern ersetzt, so konnte ich kopieren und einfügen die Anweisung, für die spätere Verwendung:

INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (23, Mike’, TO_DATE('2003/07/09', 'yyyy/mm/dd')

Mein Aktueller Ansatz ist, drucken Sie die Zeichenfolge des parametrisierten Abfrage und dann iterieren über alle Parameter und verwenden Sie ToString(). Das ist ein bisschen schwer zu Lesen, wenn es viele Parameter. Es ergäbe so etwas wie:

INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate) [:id=23, :name=Mike, birthdate=2004/07/09 00:00:00]

Anderen Ansatz, den ich Plane, wäre die Verwendung der Zeichenfolge.Ersetzen() Funktion zum ersetzen der Platzhalter für parameter. Aber vielleicht gibt es einige besseren Weg, dies zu tun?

Vielen Dank im Voraus.

Edit 1:

Dachte ich, besser, einige code-Beispiel.

Ich verwende parametrisierte Abfragen, in dieser form (Hinweis: ich bin mit log4net):

        using (OracleConnection connection = new OracleConnection(connectionString))
        using (OracleCommand command = new OracleCommand(statement, connection))
        {
            command.Parameters.AddWithValue(":id", id);
            command.Parameters.AddWithValue(":name", name);
            command.Parameters.AddWithValue(":birthdate", birthdate);
            command.Connection.Open();
            log.DebugFormat("Executing statement: {0}.", command.CommandText);
            //there I would add some more code to iterate over
            //the parameters and print them out
            command.ExecuteNonQuery();
            command.Connection.Close();
        }

Ich bin auf der Suche nach einem Weg, um sich der Erklärung, die der oracle-Befehl Objekt verwenden. Meine aktuelle Ansätze (siehe Frage) sind noch nicht sehr befriedigend, weil nicht sehr gut lesbar ist.

Ich gehofft, dass es wäre eine API (vielleicht sogar etwas in die OracleClient-namespace), die helfen würde, zu analysieren, die parametrisierte Abfrage für mich. Ich könnte noch einige weitere anspruchsvolle string-Ersetzung oder regex, aber ich sammeln wollten einige wissen. Habe ich bereits getan, einige reasearch, die auf es, aber nicht etwas gefunden.

InformationsquelleAutor Theo Lenndorff | 2009-01-17

Schreibe einen Kommentar