2

我正在尝试在 WebMatrix 中查询数据库,我已经做过几次了,只是这一次,我发现供应商列中的一些字段包含与号。我查看了几篇文章,但没有人从 WebMatrix 的角度攻击这个解决方案(实际上,根本没有人真正解决直接问题,而是针对特定环境的解决方案)。

我还尝试了几件事,包括 C# 的 Replace 方法(尽管,我从来没有得到一个明确的例子来说明我应该用什么替换 & (显然这不起作用)。

理想的情况是 sql 环境本身中的转义字符,但是,afaik,不存在这样的转义字符。我应该用什么替换以下查询以返回其字段包含&符号的行,如下所示:

SELECT vendor_id FROM vendors WHERE vendor_name = 'J & H Equipment'

即使 vendor_name 列包含的值(字符串)正好是“J & H Equipment”,上述查询也不返回任何行

它提到我正在参数化我的查询,所以实际的查询看起来像:

string selectQueryString = "SELECT ap_vendor_id FROM ap_vendors WHERE ap_vendor_name = @0";

var code = db.QueryValue(selectQueryString, searchString);

在这段代码之后,我只是将值写入页面(使用剃刀,是的,我尝试过 Html.Raw(code) 和 @code),因为这是一个 AJAX 调用。

此外,以下是我在实际查询之前尝试运行的替换功能:

searchString = searchString.Replace("&", "\\&");

请注意,双反斜杠是必需的,因为“\”字符在 C# 中是转义字符,因此两个“\”在 C# 中等同于一个“\”。

--------------------------我的解决方案---------- -----

对我来说,解决方案是在调用 AJAX 之前在我的 javascript 中使用 encodeURIComponent(我确信很清楚,到目前为止,我已经很久没有使用 AJAX 了)。

4

1 回答 1

3

解决方案是在 AJAX 调用之前在 javascript 中使用 encodeURIComponent。

于 2013-03-27T13:34:10.680 回答