-2

调试:WHERE%20(1%20=%201)%20%20AND%20(village%20=%20'Amsterdam')

我的确切查询字符串是:

WHERE (1 = 1) AND (village = 'Amsterdam')

结果是:

哪里(1 1)和(村='阿姆斯特丹')

为什么第一个 = 已删除?

第二次尝试:

WHERE ( null 是 null ) AND (village = 'Amsterdam')

结果是:(第二个 = 被删除)

WHERE ( null 是 null ) AND (村庄'阿姆斯特丹')

我的环境:

VS2010、ASP.NET 4.0、SQL-Server 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

查询字符串必须是百分比编码的。您的查询字符串不是。“=”不能出现在查询字符串数据部分。它总是被编码成 %3D。

http://en.wikipedia.org/wiki/Percent-encoding

于 2013-08-25T13:04:24.943 回答
0

HttpUtility.ParseQueryString 解析 URL 的查询字符串。它与 SQL 无关。

于 2013-08-25T12:49:10.940 回答
0

HttpUtility.ParseQueryString将 (HTTP) 查询字符串解析为 aNameValueCollection并且与您编写的 SQL 语句无关。

于 2013-08-25T13:12:03.223 回答