今天为了把网站提交表单的html过滤一下,就是把字符串中<变为<之类的操作,其他任何地方都没变。
测试时却出现:
Microsoft OLE DB Provider for SQL Server 错误 '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
-------------------------------------------------------------------
代码(ASP):
rs.Open "member",conn,1,3,2
rs.addnew
rs("ID") = userID
rs("cName") = cName
.............
rs.update
rs.close
重要说明:以前运行一切正常,这次改动没有修改任何数据库操作相关的代码。经过多次测试:(1) 输入简单几个字符没有空格、html,是可以插入的。(2)当字符串中有"<"替换成了"<",就会出现错误。(3) 过了一会儿,没有动过如何程序,输什么字符串都可以成功插入了。
那真是见鬼了!
网上搜索了一下,此类问题一大堆!
有的说是sql语句错了,我以上的操作不存在这个问题;
有的说数据类型错误或者长度超限,我的数据类型是varchar(255),cName的值也是字符型,且长度只有10左右;
有的说是链接错误、表名或者字段名错误,检查过都正常。
最大的疑惑是:偶尔出错,偶尔正常!
网上查到不单单是网站会出现,其他如VB也会出现,而且也有公务员报名系统出错的记录:http://zhidao.baidu.com/question/90877706.html?si=9
公务员报名系统不可能出错了没一个人报成功吧,也肯定是偶尔出现此类问题。
我的猜测:可能是SQL Server对字符编码的支持问题,偶尔出现问题可能与客户端发过来的数据流有关。我把字段类型由varchar改为nvarchar就没出现过此类问题。
仍然不解中。。。。
有相同遭遇的,忘共勉!
有高手见到的,希望多指点!