本帖最后由 tammeny 于 2014-03-11 14:57:42 编辑

解决方案 »

  1.   

    '是数据库的关键字符,易用于SQL注入
      

  2.   

    你没有做sql防注入,转换特殊字符。
    后台处理下,转成两个单引号就可以了。
      

  3.   

    楼上正解,SQL语句中有这样的语句:  where name='zhang' ,这相当于C#中的 "zhang",所以 '  属于特殊字符,就会报错
      

  4.   

    试试在插入数据的时候用存储过程或者用参数的形式把输入的值穿给sql语句
    比如你的sql语句是这么写的: 当你要插入的数据是a时, insert into testTable values ('a'), 这种情况会正确插入, 但是当你要插入的数据是英文的单引号时, sql语句变为:insert into testTable values ('''), 由于单引号没有闭合, 所以会报错
    正确的方法是insert into testTable values (@myValue)
    然后把你的输入值添加到command的parameter列表中, 然后再执行
      

  5.   

    跟什么“防注入”没有关系。你了解过t-sql语法吗?它规定字符串常量里的单引号必须写成两个单引号,你替换了了吗?
      

  6.   

    比如说你要记录一个句子到数据库var s = "I'd like to visit Spain,Italy,Switzerland,Austria and Yugoslavia";
    var sql = insert abc(clause) values('" + s.Replace("'","''") +"')";这里扯不上什么防注入,不要小题大做,这是基本的t-sql语法。不知道要将s中的单引号需要转义的程序员,小问题上就这样了,编写程序是有问题的。。