-2

デバッグ: WHERE%20(1%20=%201)%20%20AND%20(村%20=%20'アムステルダム')

私の正確なクエリ文字列は次のとおりです。

WHERE ( 1 = 1 ) AND (村 = 'アムステルダム')

結果は次のとおりです。

WHERE ( 1 1 ) AND (村 = 'アムステルダム')

最初の = が削除されたのはなぜですか?

2 回目の試行:

WHERE ( null は null ) AND (village = 'アムステルダム')

結果は次のとおりです: (2 番目の = が削除されます)

WHERE ( null は null ) AND (村 'アムステルダム')

私の環境:

VS2010、ASP.NET 4.0、SQL サーバー 2008、unicode8

ここに私のコードがあります:

protected void Page_Load(object sender, EventArgs e)
{
  var qs = this.ClientQueryString;
  NameValueCollection qscoll = HttpUtility.ParseQueryString(qs);

  StringBuilder sb = new StringBuilder();
  foreach (String s in qscoll.AllKeys)
  {
    sb.Append(s + qscoll[s]);
  }

  string sWhere = sb.ToString();

  // ...
}

あなたのサポートに感謝します! これはうまくいきます

void Page_Load(object sender, EventArgs e)
{
  var qs = this.ClientQueryString;
  var sQuery = HttpUtility.UrlDecode(qs);
  //...
}
4

3 に答える 3

0

HttpUtility.ParseQueryString(HTTP) クエリ文字列を に解析し、NameValueCollection記述した SQL ステートメントとは関係ありません。

于 2013-08-25T13:12:03.223 に答える
0

HttpUtility.ParseQueryString は、URLのクエリ文字列を解析します。SQLとは関係ありません。

于 2013-08-25T12:49:10.940 に答える
0

クエリ文字列はパーセント エンコードする必要があります。あなたのクエリ文字列はそうではありません。「=」は、クエリ文字列データ部分には使用できません。常に %3D にエンコードされます。

http://en.wikipedia.org/wiki/Percent-encodingを参照

于 2013-08-25T13:04:24.943 に答える