【发布时间】:2013-03-27 13:30:05
【问题描述】:
我正在尝试在 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);
在这段代码之后,我只是将值写入页面(使用 razor,是的,我尝试过 Html.Raw(code) 和 @code),因为这是一个 AJAX 调用。
另外,下面是我在实际查询之前尝试运行的替换功能:
searchString = searchString.Replace("&", "\\&");
请注意,双反斜杠是必需的,因为“\”字符在 C# 中是转义字符,因此两个“\”在 C# 中等同于一个“\”。
--------------我的解决方案------ --------
对我来说,解决方案是在调用 AJAX 之前在我的 javascript 中使用 encodeURIComponent(我确信现在很清楚,我已经很久没有使用 AJAX了)。
【问题讨论】:
-
请贴出你用来查询数据库的代码。
-
如果可能的话,请将前端代码和整个方法贴在code-behind/Controller中,以便我们看看发生了什么。
标签: c# sql-server-ce webmatrix