如何在WebMatrix的sql查询中转义&符号?

时间:2013-03-27 13:30:05

标签: c# sql-server-ce webmatrix

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

我还尝试过几个方面,包括C#的替换方法(尽管如此,我从来没有能够得到一个明确的例子,我应该用什么替换&符号,如果有什么作为合适的替代品,那就是),并且逃避&符号用反斜杠(显然这不起作用)。

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

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

上述查询不返回任何行,即使vendor_name列包含的值(字符串)恰好是'J& H设备'

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

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

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

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

另外,下面是我在实际查询之前尝试运行的替换函数:

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

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

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

对我来说,解决方案是在AJAX调用之前在我的javascript中使用encodeURIComponent(我确定现在很清楚,我还没有长时间使用AJAX)。

1 个答案:

答案 0 :(得分:3)

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