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