Access数据库引擎版本改变导致的800a0e7d错误
作者:Lee 日期:2009-12-31
今日在帮别人改个用ASP写的网站的小问题,期间需要修改数据库表结构。改完后由于页面闲置时间过长,需要重新登录,登录时却提示用户名或密码不正确,很是奇怪,用户名和密码是复制的,怎么会有错呢,反复核对验证,确定用户名和密码没弄错,而且刚才改数据库结果时也没动管理员用户表。
我想,或许是页面程序问题导致误报,于是去掉了页面中的容错语句(即:on error resume next),这时再登录又有了如下提示:
ADODB.Recordset 错误 '800a0e7d'
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。
找到报错的那行,一看是记录集打开语句,我想可能是数据库连接有问题,找到数据据库连接语句,看到连接字符串是这样写的:
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
这个连接写法太古老了,难道是这个的原因?先改成新版引擎再说,如下:
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+server.mappath(""&db&"")
保存后重试登录,成功了。
这下要找找原因了,为什么之前下切正常呢?对比下两个连接字符串,不同的是数据库引擎写法。而我是在改了数据库结构后才出现错误,由于我用的是Office2003,所以可能改了后保存起来的数据库也就产生了变化,使用老的引擎无法连接了,才导致出现这样的错误。
我想,或许是页面程序问题导致误报,于是去掉了页面中的容错语句(即:on error resume next),这时再登录又有了如下提示:
ADODB.Recordset 错误 '800a0e7d'
连接无法用于执行此操作。在此上下文中它可能已被关闭或无效。
找到报错的那行,一看是记录集打开语句,我想可能是数据库连接有问题,找到数据据库连接语句,看到连接字符串是这样写的:
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
这个连接写法太古老了,难道是这个的原因?先改成新版引擎再说,如下:
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+server.mappath(""&db&"")
保存后重试登录,成功了。
这下要找找原因了,为什么之前下切正常呢?对比下两个连接字符串,不同的是数据库引擎写法。而我是在改了数据库结构后才出现错误,由于我用的是Office2003,所以可能改了后保存起来的数据库也就产生了变化,使用老的引擎无法连接了,才导致出现这样的错误。
评论: 0 | 引用: 0 | 查看次数: 700
发表评论
上一篇
下一篇


文章来自:
Tags: 




