我如何从WebMatrix逃避sql查询中的&号

本文关键字:查询 sql 逃避 WebMatrix | 更新日期: 2023-09-27 18:06:11

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

我也尝试了一些东西,包括c#的Replace方法(尽管,我从来没有能够得到一个明确的例子,我应该用什么来替换&符号,如果有任何合适的替代品存在的话,那就是),以及用反斜杠转义&符号(显然这不起作用)。

在sql环境中使用转义字符是最理想的,但是,错误地说,不存在这样的转义字符。我应该用什么替换下面的查询来返回其字段包含&号的行,如下所示:

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)。

我如何从WebMatrix逃避sql查询中的&号

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