51Testing软件测试论坛

标题: 查询oracle数据库,recordCount返回值为-1 [打印本页]

作者: 玉月亭苇    时间: 2009-8-27 12:21
标题: 查询oracle数据库,recordCount返回值为-1
用以下脚本查询oracle数据库。然后把查询结果的行数存入rowCount,但rowCount的值一直为-1,即使查询的结果是有几行的。
Set oCon = CreateObject("ADODB.Connection")
Set oRs = CreateObject("ADODB.Recordset")
oCon.Open strCon
If oCon.State = 0 Then
msgbox("fail to connect DB")
End If
oRs.Open sql,oCon,1,1
Dim rowCount
rowCount=oRs.RecordCount
MsgBox rowCount

上网查了挺多资料,有的说是cursortype不行,要用客户端的游标,
有的说cursor位置应该置为3,ors.cursorlocation=3,
挺多方法都试过,都不行。
麻烦各位指点指点,困惑。。。
作者: lijian422202    时间: 2009-8-27 13:57
set connection = CreateObject("ADODB.Connection")
connection.cursorLocation=3
作者: hsjzfling    时间: 2009-8-27 14:05
以下是ADO手册中的描述:
使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。

Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。
作者: 玉月亭苇    时间: 2009-8-27 14:20
标题: 回复 2# 的帖子
哈哈,用你的方法解决了,原来是要把Connection对象的cursorlocation=3。
谢谢^_^
作者: 玉月亭苇    时间: 2009-8-27 14:22
原帖由 hsjzfling 于 2009-8-27 14:05 发表
以下是ADO手册中的描述:
使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCou ...



嗯,按你这么说的话,recordCount好像也是不那么好用了。不知有没有其他的方法可以记录结果集的行数的。。。

还有,能否share一份ADO手册??

谢谢^_^
作者: lijian422202    时间: 2009-8-27 14:28
定义ADO连接是用客户端的游标.   
  采用客户端游标能够使用几乎所有的ADO属性,不用去关心服务器是什么DBMS,   而使用服务器端游标的话,某些DBMS不支持部分的ADO属性(比如recordcount)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2