oledb / ado.net:コマンドのテキストを取得し、すべてのパラメーターを置き換えます
-
05-07-2019 - |
質問
すべてのパラメーターを値に置き換えた OleDbCommand
のテキストを取得することは可能ですか?例えば。以下のコードでは、クエリテキストを取得する方法を探しています
SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'
パラメータの割り当てが終了した後。
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";
解決
いいえ:パラメーターコレクションを繰り返し処理し、string.Replace()を実行して同等のものを取得する必要があります。 @parametername
構文ではなく、?
構文を使用する必要がある場合は特に苦痛です。
この理由は、文字列全体がアセンブルされないことです決して。パラメータとサーバーに送信され、データとして扱われ、文字列に含まれることはありません。
すべて同じように、私はあなたの痛みを理解しています。デバッグ目的でを呼び出すことができる何らかの種類の .ComposeSQL()
メソッドが含まれていれば良かったでしょう。 。
他のヒント
実行されたクエリを確認するだけで、プログラムでクエリを操作する必要がない場合は、SQLプロファイラを使用できます。
所属していません StackOverflow