现在碰到这样一个问题,就是sql里如果碰到'单引号,sql语句会出错。
因为设计的问题,在写代码的时候没有进行sql检查,就是把一个'替换成两个,
现在都出版本了才发现,请问有什么办法可以解决呢?
每一个sql里的输入项重新进行检查,不现实,太多了。
我想在数据层解决,因为数据层就几个函数,所有的sql都调用这里,请问有办法解决吗?谢谢

解决方案 »

  1.   

    能否改成参数形式的sql.而不拼接?
      

  2.   

    用单引号注释
    string sql = "insert into [table](name)values('what''s up')";
      

  3.   

    这样是不可以的。
    因为如果在项目开始的时候这样是可以的。
    但是在项目结束的时候怎么可以每个sql语句都改一遍呢?比如string sql = "insert into [table](name)values('what's up')";我就给数据层传入这个sql,怎么处理这个sql呢replace 不行,因为会把前面的两个也替换了。
      

  4.   

    string sql = "insert into [table](name)values(replace('what''s up',''',''))"; 
    试试吧,不知道行不行
      

  5.   

    在数据层将传来的sql语句中的‘替换了不就得了!
      

  6.   

    在SQL语句中,如果需要插入文本中含有单引号,需要替换为两个单引号,即'',这样在数据库中存放也只是一个,这是一个转义
      

  7.   

    直接用sqlparameter 就可以了...
      

  8.   


    那你赶紧停收吧,比如%,_这些东西你还没测的吧?
    B/S的系统么?还有&之类的没有测吧....
      

  9.   

    string sql = "insert into [table](name)values('what's up')what's up 是直接插入 还是以变量插入的。如:string str1="what's up";
    为什么要在sql中改   不能在str1上替换吗?
      

  10.   

    你应该考虑用传参数来写SQL语句的,或者采用存储过程也可以的,这样替换不是个好办法