0

私はこれを持っています:

string a = "a+a";
SqlCommand q = new SqlCommand("SELECT * FROM table WHERE a = @a", conn);
q.Parameters.AddWithValue("@a", a);

しかし、パラメータ化により+が完全に消去され、目的のの代わりにがa残ります。+その場所が必要です。削除するのではなく、エスケープしたいだけです。a aa+a

+を消去する代わりにエスケープするようにC#に指示する方法はありますか?.NET Framework 2.0を使用していますが、アップグレードするオプションがありません。

4

3 に答える 3

1

パラメータのデータ型を明示的に設定する必要があります

于 2010-09-17T04:55:51.040 に答える
1

代わりに試してください

q.Parameters.Add( "@a", SqlDbType.Text ).Value = a;

それが問題かどうかを確認してください

于 2010-09-17T05:01:29.250 に答える
0

みんな、ありがとう。ここで何が起こったのか正確にはわかりませんが、保存する前にすべての + 記号をゼロに置き換えただけです。

この変数をクエリ文字列に転送したことは覚えていると思いますが、正確には覚えていません。もしそうなら、おそらくプラスはパラメータ化コードではなく、qsパーサーによって食べられました。あなたはそれを確認したいかもしれません。

私は急いでいたので、データ型を指定しようとしませんでした.0のように食べられないものに+を置き換えることが最速の解決策でした。

すべての貢献者に改めて感謝します。

于 2010-09-29T21:57:16.473 に答える