Frage

Ist es möglich, den Text eines OleDbCommand mit allen Parametern mit ihren Werten ersetzt zu bekommen? Z.B. in dem folgenden Code für einen Weg, ich bin auf der Suche die Abfrage Text

bekommen
SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'

, nachdem ich die Zuordnung der Parameter beendet.

var query = "SELECT * FROM my_table WHERE c1 = ? and c2 = ?";
var cmd = new OleDbCommand(query, connection);
cmd.Parameters.Add("@p1", OleDbType.WChar).Value = "hello";
cmd.Parameters.Add("@p2", OleDbType.WChar).Value = "world";
War es hilfreich?

Lösung

Nein: Sie haben sich durch die Parameter-Auflistung zu durchlaufen, eine String.Replace () tun das Äquivalent zu bekommen. Es ist besonders schmerzhaft, wenn Sie die ? Syntax verwenden, anstatt die @parametername Syntax.

Der Grund dafür ist, dass die vollständige Zeichenfolge nie zusammengesetzt. Die Parameter und an den Server gesendet und als Daten behandelt, und werden nie in der Zeichenfolge enthalten.

das gleiche, ich für ein Verständnis für Ihre Schmerzen. Es wäre schön gewesen, wenn sie irgendeine Art von .ComposeSQL() Methode enthalten Sie nennen könnten für Debugging-Zwecke , dass vielleicht produziert auch eine Compiler-Warnung zu helfen, den Einsatz in der Produktion zu vermeiden.

Andere Tipps

Wenn Sie müssen nur sehen, welche Abfrage ausgeführt wurde und brauchen nicht programmatisch mit ihm zu arbeiten, können Sie SQL Profiler verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top