全文检索需要字符串用双引号表示,web网站获得的字符串加双引号出错问题。1.文本框中获得字符串。如:北京 柳州
2.分词成字符数组 如:string[] cityName; cityName[0]="北京";cityName[1]="柳州";
3.组合全文检索sql语句,如:select * from city where contains(*,'"北京" or "柳州"');
问题在这里,sql语句中北京跟柳州旁边必须要双引号,在Default.aspx.cs中编写代码string Condtion="";---sql条件语句
for (int i = 0; i < cityName.Length; i++)
{
    if (i != cityName.Length - 1)
          {
               Condtion= Condtion+ "\"" + cityName[i] + "\" or ";
            }
            else
            {
                Condtion= Condtion+ "\"" + cityName[i] + "\"";            }
}后得到的结果是select * from city where contains(*,'\"北京\" or \"柳州\"');这样就不能在数据库中执行
只有select * from city where contains(*,'"北京" or "柳州"');才行
无论使用@"" 还是使用\" 效果都一样,在建立控制台程序时就不会出现,但是现在需要web应用,各位高手帮忙。

解决方案 »

  1.   

    楼主的这段代码没有问题,你将Condtion直接输出就知道了。不会出现“\”,那只出现在调试环境中。你在web中是怎么传递的?另外,这段代码存在SQL注入风险。
      

  2.   

    vs 2008中web应用就是出现问题,不然我也不会问了。我做控制台项目做测试的时候是没问题的,我知道存在SQL注入风险,我还要再进行处理,但是这个问题没解决就被困在这里了!先谢谢你了!
      

  3.   

    为什么不用parameter来做参数传递呢?
      

  4.   

    用SqlParameter进行参数传递可以解决这个问题.!
      

  5.   

    不好意思,数据层用的是NHibernate,sqlParmater能用吗?指教