我正在尝试在 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 了)。