Recordset(0x800A0BB9)奇怪的错误,找遍了ms新闻组,没得到答案,不知道有没有遇到过的(另开贴给分,欢迎提供线索)

yonghengdizhen 2003-11-13 12:37:40
<%
set oConn=Server.CreateObject("ADODB.Connection")
set oRs=Server.CreateObject("ADODB.Recordset")
'oConn.Open "DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=;DATABASE=Northwind"
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/public/Northwind.mdb") & ";"
Set oRs = oConn.Execute("SELECT * FROM users")
'oRs.Open Server.MapPath("RESULT.XML")
'Response.Write oConn.State
'Response.End
'oRs.Open "SELECT * FROM users",oConn,3
while not oRs.EOF
Response.Write oRs(0) & "<BR>"
oRs.MoveNext
wend
oRs.Close
oConn.Close
%>

上面的代码把Set oRs = oConn.Execute("SELECT * FROM users")换成
oRs.Open "SELECT * FROM users",oConn,3

oRs.Open "SELECT * FROM users",oConn
死活运行不下去,提示Recordset 0x800A0BB9错误.

连接是没有问题的.输出connection的state=1表示已打开,并且用oConn能够返回记录集.只有当用recordset去open的时候才出错(以任何一种游标和锁打开).

同样的问题对于连接sql server也是存在(用VB运行出现同样的错误).

但当用recordset去open打开一个以前save过的recordset xml文件时.又是正常的.

我用mdac的版本检测程序检测到了一些组件警告信息,但这些信息我之前在别的机器上也遇到过.

我的mdac版本是2.6RTM,之前由于这个问题进行过win2k(Profession)的紧急修复安装,之后再安装了sql server2000个人版,由于在sql server2000的安装过程中出现了异常终止,我只好手工删除了注册表中的下面这些键
+ HKEY_LOCAL_MACHINE
+ SOFTWART
+ Microsoft
+ Windows
+ CurrentVersion
+ Setup
+ ExceptionComponents
将 ExceptionComponents 下面的文件夹全部删除!
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
{60BFF50D-FB2C-4498-A577-C9548C390BB9}
然后删除了sql server的整个注册表键.之后用 k=dbg的参数以单步方式运行了sql server的安装程序,sql server安装成功后,上面的代码就再也没有运行通过了.

如果哪位兄弟遇到过这种情况,并提供解决问题的线索,我将另外开贴给分

...全文
114 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Archimond 2003-11-23
  • 打赏
  • 举报
回复
关注
yonghengdizhen 2003-11-17
  • 打赏
  • 举报
回复
to phoenixsbk(凤之泪痕)
recordset是ADO对象模型组件之一,而ado又是mdac的主要组成部分,怎能说和mdac无关呢?
phoenixsbk 2003-11-17
  • 打赏
  • 举报
回复
首先,按照你的说法,“这段代码的正确性是经过了验证的(在另外一台机器上运行正常)”
显然,是你机器SQL SERVER与MDAC中出现了问题,以下是我的一点看法。
以ASP的运行环境,可以不需要装任何组件(我指类似MDAC)就可以运行,这表明,对recordset的解释并不存在于mdac中,当然也不可能存在于sql server中,或许可能在于IIS中,我想可能是你在修改注册表时可能改动了一部分本来就存在于win2k中的键值导致的。
yonghengdizhen 2003-11-16
  • 打赏
  • 举报
回复
to alexzhang00(三角猫(sjcatsoft))
你说的方法在我一开始就试过了,问题并不出在iis,我在装iis之前就用VB程序验证过那段代码,也是不能运行..而且据我用注册表监控工具的监控,所有异常的注册表访问都出在访问COM时,但是由于异常信息过多,我无法从中筛选出对解决该现象有用的部分来

to FBug(花知)
前面的CreateObject是冗余代码,如果使用Connection对象返回记录集可以不需要调用CreateObject,因为实例在Execute内被创建.但调用是没错的,前面的实例在第二次获取Recordset接口时会被脚本引擎自动释放掉,但是作为一种编码习惯这是不好的.

to onetwofree(One)
Set oRs = oConn.Execute("SELECT * FROM users")
这个代码是没有错误的,实际上ADO比DAO的优势其中之一就是灵活的对象模型设计
onetwofree 2003-11-15
  • 打赏
  • 举报
回复
Set oRs = oConn.Execute("SELECT * FROM users")
这样用连接对象Execute执行后没有返回结果的
Command对象的Execute有参数的,可以设置十分有数据结果返回的
那么……可能Connection对象也要设置的!
jchmax 2003-11-15
  • 打赏
  • 举报
回复
曾经遇到过的问题:记录集中有两个字段,一个datetime ,一个text类型.循环输出时,
Response.write 的时候竟然要分先后才能输出,否则其中一个就显示不出来.
asp + access iis5.0 svr2000,ie6 环境
jchmax 2003-11-15
  • 打赏
  • 举报
回复
楼上的胡说八道.
up,关注中
FBugFramework 2003-11-14
  • 打赏
  • 举报
回复
set oRs=Server.CreateObject("ADODB.Recordset")后怎么还可以
Set oRs = oConn.Execute("SELECT * FROM users") ??
并且用它就没问题 ??

不清楚啦。。好是奇怪!
DeltaCat 2003-11-14
  • 打赏
  • 举报
回复
那就 重装IIS,安装MDAC2.8
反正用不了10分钟就可以搞定
^_^
yonghengdizhen 2003-11-14
  • 打赏
  • 举报
回复
to g_cloud()
之前同样的软件环境下ado2.6已经正常工作了大半年了,为什么现在不行.重装ado.2.7估计也解决不了问题,不过我可以试试.
拖拉板 2003-11-14
  • 打赏
  • 举报
回复
重新安装ado 2.7 or ado 2.8
yonghengdizhen 2003-11-14
  • 打赏
  • 举报
回复
to supere(虚心求教)
我已经regsvr32 ado15.dll /u卸载并重新注册过ado了.
yonghengdizhen 2003-11-13
  • 打赏
  • 举报
回复
首先声明.我的sql server/access数据库经过验证都是正确无误的.
supere 2003-11-13
  • 打赏
  • 举报
回复
怀疑是你的ADO的Recordset有问题!重新安装一个ADO看看
yonghengdizhen 2003-11-13
  • 打赏
  • 举报
回复
up
yonghengdizhen 2003-11-13
  • 打赏
  • 举报
回复
to smuzy(smuzy) ( )
不要怀疑写法正确性.这段代码的正确性是经过了验证的(在另外一台机器上运行正常)

to alexzhang00(三角猫(sjcatsoft))
游标和锁的组合都已经用遍了,参数写全都不行

to fujiachun(傅加淳)
我的机器不要说sp4,连sp2都没打,况且不仅仅是access用recordset打不开,sql server的数据用recordset也打不开,recordset只能打开xml recordset,用connection的execute都是可以返回recordset的
caixp1 2003-11-13
  • 打赏
  • 举报
回复
语法都没什么问题啊,应该是你在删除重装过程中造成机器软件运行环境出了故障
富察咪咪 2003-11-13
  • 打赏
  • 举报
回复
当access数据库有密码时如果装了sp4使用OBDC时会报此错误,去掉密码试试,
Provider=sqloledb;SERVER=你的机器名;UID=sa;PWD=;DATABASE=Northwind

DRIVER={Microsoft access}
DeltaCat 2003-11-13
  • 打赏
  • 举报
回复
ADODB.Recordset(0x800A0BB9)错误:
原因:sql语句出错(sql语句或conn语句未定义或对一个rs属性进行赋值时发生错误)

你是把 游标和锁定参数都写全试试呢?
比如:

oRs.Open "Select * From users",oConn,1,1,1
smuzy 2003-11-13
  • 打赏
  • 举报
回复
oRs.Open "SELECT * FROM users",oConn,1,3


少了一个参数吧?

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧