oledb / ado.net:コマンドのテキストを取得し、すべてのパラメーターを置き換えます

StackOverflow https://stackoverflow.com/questions/178857

  •  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プロファイラを使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top