4

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";
4

2 に答える 2

8

いいえ: パラメータ コレクションを自分で反復処理し、string.Replace() を実行して同等のものを取得する必要があります。?構文ではなく構文を使用する必要がある場合は特に苦痛です@parametername

これは、文字列全体が組み立てられないためです。パラメータはサーバーに送信され、データとして扱われ、文字列には含まれません。

それでも、私はあなたの痛みを理解しています。デバッグ目的.ComposeSQL()で呼び出すことができるある種のメソッドが含まれていればよかったのですが、おそらく本番環境での使用を避けるのに役立つコンパイラ警告も生成します。

于 2008-10-07T15:04:13.180 に答える
3

実行されたクエリを確認するだけで、プログラムで操作する必要がない場合は、SQL プロファイラーを使用できます。

于 2008-10-07T15:07:10.273 に答える