1

パラメータがVB.netで使用されている場合、実行後にクエリ文字列を表示する方法を探しています..

例えば ​​:

Using con As New SqlConnection(strConnect)
con.Open()
Using com As New SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con)
    com.Parameters.AddWithValue("@C1", myValueForColumn1)
    com.Parameters.AddWithValue("@C2", myValueForColumn2)
    com.ExecuteNonQuery()
End Using
End Using

パラメータではなく実際の値でクエリ文字列を表示したい

4

1 に答える 1

2

お探しのクエリ文字列は存在しません。どの時点でも作成されることはありません。パラメーター化されたクエリの全体的な目的は、パラメーター内のデータがコマンド テキストに決して代入されないようにすることです。そのため、データ入力がコードとして扱われる可能性はあり';DROP TABLE myTable;-- ません。

覚えておいてください: パラメータ化されたクエリは入力をサニタイズしません: それらはそれらを隔離します。

何が起こっているのかを理解したい場合は、次のような sql プロシージャを実行しているかのように考えてください。

DECLARE @C1 nvarchar(50);
DECLARE @C2 nvarchar(50);

Set @C1 = imaginaryFunctionToGetValueFromDataSegmentOfConnection(1);
Set @C2 = imaginaryFunctionToGetValueFromDataSegmentOfConnection(2);

INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2);

詳細を知りたい場合は、関連する実際のメカニズムはsp_executesqlです。デバッグ用の実際のクエリを取得したい場合は、関数呼び出しの代わりに値を代入して、上記のスニペットのようなものを実際に構築するコードを記述することをお勧めします。

于 2012-10-03T03:06:03.030 に答える