ASP中数据类型与SQL SERVER中数据类型的转换

ztt918zx 2015-05-04 12:11:54
虽然自己测试没有问题,但是少量客户反映,使用中出现以下错误

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。


id=session("id")
rs("id")=id ' 错误提示该行出现问题


使用vartype进行检查,经过id=session("id")之后,id的类型是长整形,而sql server数据库中rs("id")的id字段是int(4字节),所以我怀疑上面的错误是因为类型不匹配而引起的。

那么现在的解决办法是:
1.
rs("id")=int(id) 
,这种办法可能可以,但是vbscript中int类型的数据范围-32768~32767,如果转换为int后,随着用户的增多,id超过了这个范围就麻烦了

2.将sql server数据库中的id字段改为bigint,但是不知道bigint是否对应于vbscript中的long?

困惑中,请教高手怎么解决这个问题,谢谢!
...全文
164 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Dogfish 2015-05-05
引用 7 楼 ztt918zx 的回复:
程序中下面的情况是否会导致数据类型的不匹配呢?谢谢 endtime=now() rs("endtime")=endtime endtime在SQL server中是datetime类型
试试这个rs("endtime")=CDATE(endtime)
回复
wangsdong1 2015-05-04
你先将你的ID输出来看看是什么数字
回复
ztt918zx 2015-05-04
程序中下面的情况是否会导致数据类型的不匹配呢?谢谢 endtime=now() rs("endtime")=endtime endtime在SQL server中是datetime类型
回复
ztt918zx 2015-05-04
因为其他地方都检查了,没有发现问题
回复
ztt918zx 2015-05-04
引用 3 楼 showbo 的回复:
和1#说的差不多,不是你的id的问题,可能是客户端提交的内容太长,超过了某个字段的长度而出现这个错误。自己将字段内容加长或者改为ntext类型
谢谢版主,请问rs("id")的标识规范设置为否,是否与此有关呢,谢谢
回复
和1#说的差不多,不是你的id的问题,可能是客户端提交的内容太长,超过了某个字段的长度而出现这个错误。自己将字段内容加长或者改为ntext类型
回复
jiangzf1 2015-05-04
vbscript的数据长度要根据浏览器不同的,32的服务器是不支持到64位的长整型数据(asp不支持64位),达不到sql server 的 bigint 大小。
回复
Dogfish 2015-05-04
VBScript的值的范围是 -2147483648 and 2147483647. MSSQL的INT的值的范围是 -2147483648 and 2147483647 所以是没有问题的。可能问题不是出现在那里。有可能有空格。
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2015-05-04 12:11
社区公告
暂无公告