添加数据的时候在文本框输入“ ' ”会出错 本帖最后由 tammeny 于 2014-03-11 14:57:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 '是数据库的关键字符,易用于SQL注入 你没有做sql防注入,转换特殊字符。后台处理下,转成两个单引号就可以了。 楼上正解,SQL语句中有这样的语句: where name='zhang' ,这相当于C#中的 "zhang",所以 ' 属于特殊字符,就会报错 试试在插入数据的时候用存储过程或者用参数的形式把输入的值穿给sql语句比如你的sql语句是这么写的: 当你要插入的数据是a时, insert into testTable values ('a'), 这种情况会正确插入, 但是当你要插入的数据是英文的单引号时, sql语句变为:insert into testTable values ('''), 由于单引号没有闭合, 所以会报错正确的方法是insert into testTable values (@myValue)然后把你的输入值添加到command的parameter列表中, 然后再执行 跟什么“防注入”没有关系。你了解过t-sql语法吗?它规定字符串常量里的单引号必须写成两个单引号,你替换了了吗? 比如说你要记录一个句子到数据库var s = "I'd like to visit Spain,Italy,Switzerland,Austria and Yugoslavia";var sql = insert abc(clause) values('" + s.Replace("'","''") +"')";这里扯不上什么防注入,不要小题大做,这是基本的t-sql语法。不知道要将s中的单引号需要转义的程序员,小问题上就这样了,编写程序是有问题的。。 为什么要加反斜杠? js版本没人解答--简单js解释下 想在首页登陆使用Discuz!NT论坛用户表 ASP.NET中执行javascript打开新窗口的问题 window.open在ASP.NET中使用的疑问 如何掌握.NET思想(菜鸟的问题) 关于DBGRID! 十万火急请教:怎样使点下的按钮(Web控件)禁止再点,并且执行该按钮的耗时代码 Asp.Net Forums 使用的一个问题 请教一个DataGrid问题 安装discus论坛安装部上! 如何获取当前程序发布后的路径
后台处理下,转成两个单引号就可以了。
比如你的sql语句是这么写的: 当你要插入的数据是a时, insert into testTable values ('a'), 这种情况会正确插入, 但是当你要插入的数据是英文的单引号时, sql语句变为:insert into testTable values ('''), 由于单引号没有闭合, 所以会报错
正确的方法是insert into testTable values (@myValue)
然后把你的输入值添加到command的parameter列表中, 然后再执行
var sql = insert abc(clause) values('" + s.Replace("'","''") +"')";这里扯不上什么防注入,不要小题大做,这是基本的t-sql语法。不知道要将s中的单引号需要转义的程序员,小问题上就这样了,编写程序是有问题的。。