主题:  帮忙看一下:向数据库添加记录时发生的错误

浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#12004/6/15 23:50:24
在编写留言簿时,发生如下错误:

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
/asp/add_message.asp, 第 16 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

网页:
POST 328 ??? /asp/add_message.asp

POST Data:
message_title=2%BC%B6%B5%C4%CF%C2%C0%AD%D1%A1%D4%F1%BF%F2%2C%C8%E7%BA%CE%B4%D3%CA%FD%BE%DD%BF%E2%B6%C1%CA%FD%BE%DD%3F&message_author=zqdong&message_comment=2%BC%B6%B7%D6%C0%E0%2C%B5%DA2%BC%B6%D4%F5%C3 . . .


我查看了一下以前的帖子,有解释是:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21) --> sql语句出错(数据类型不匹配或表名(字段名)错误或表处于编辑状态,或表不存在于conn打开的数据库中)

可是我并没有用SQL语句呀!我的代码如下:



    Dim message_title
    Dim message_author
    Dim message_comment
    message_title=Left(Request("message_title",25)
    message_author=Left(Request("message_author",10)
    message_comment=Left(Request("message_comment",100)
    
    Dim objRS
    Set objRS=GetRecordset("MessageBoard","message"
    objRS.AddNew Array("message_title","message_author","message_comment",Array(message_title,message_author,message_comment)
    objRS.Update

关键是错误并不总时存在,有时发生,有时正常。往往是通过粘贴的方法输入内容时产生错误。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#22004/6/15 23:56:57
当我在留言标题栏中输入:

2级的下拉选择框如何从数据库读数据

时发生错误



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#32004/6/16 8:41:47
你看看长度是不是超过字段的限制了



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#42004/6/16 12:11:21
我在将数据入库之前,用Left()对其进行截取了呀?
message_title=Left(Request("message_title",25)
在数据库中,message_title字段为char类型,长度为25,不允许空。所以我对提交的内容进行了截取。
我搜索了相关的帖子,也都说是长度超了,可我明明载了呀?



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#52004/6/16 12:12:35
有的论坛说:建议不用AddNew方法,改用INSERT方法,我试了,还是一样。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#62004/6/16 12:34:07
改用INSERT方法后,出现的错误提示为:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)
[Microsoft][ODBC SQL Server Driver][SQL Server]将截断字符串或二进制数据。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#72004/6/16 12:56:18
谢谢allinhands,已经解决了。



大辉郎

职务:普通成员
等级:1
金币:0.0
发贴:25
#82004/6/20 21:18:14
diffmaker你是怎么解决的?我也出现过这样的问题,时好时坏,起初我怀疑是软件的问题.同一个程序在我的机子上能用拷到别人的机子上有时就不能用了,只是有时.请不吝赐教!再这我先谢谢了!



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#92004/6/21 10:55:54
一般要延长字段长度。
我只是将字段类型char改为nchar后,就没有发现类似的问题了。不知别人是如何做的。



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#102004/6/21 12:50:27
char和nchar用的机会很少,如果长度不是固定的,就是varchar或nvarchar