adodb.recordset获取多个数据结果集

  asp的adodb.recordset如何获取支持返回多个数据库数据结果的数据集合,如ms sqlserver支持一次返回多个数据结合,adodb.recordset如何获取多个结果集合。

  平常用adodb.recordset时一般只返回一个结果结合,直接遍历recordset即可。如下

sConnectString = "DRIVER={sql server};SERVER=localhost;" & _
                 "DATABASE=northwind;UID=sa;PWD="
set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open "SELECT categoryId, categoryName FROM Categories " & _
         "WHERE categoryId > 3", sConnectString
Do While Not oRs.EOF
   '相关操作。。
   oRs.MoveNext
Loop
oRS.Close

  但是如果要执行多条sql select语句,一次性获取多个数据结合,该如何处理?那就是使用一个比较少用的方法nextrecordset

NextRecordset 方法

清除当前 Recordset 对象并通过提前执行命令序列返回下一个记录集。

语法

Set recordset2 = recordset1.NextRecordset( RecordsAffected )

返回值

返回 Recordset 对象。在语法模型中,recordset1 和 recordset2 可以是相同的 Recordset 对象,或者可以使用不同的对象。

参数

RecordsAffected    可选,长整型变量,提供者向其返回当前操作所影响的记录数目。

注意   该参数仅返回受操作影响的记录的数目;它不会从用于生成 Recordset 的选择语句返回记录的计数。

说明

使用 NextRecordset 方法返回复合命令语句中下一条命令的结果,或者是返回多个结果的已存储过程结果。如果使用 Command 的 Execute 方法或者 Recordset 的 Open 方法打开基于复合命令语句(例如“SELECT * FROM table1;SELECT * FROM table2”)的 Recordset 对象,则 ADO 仅执行第一条命令并将结果返回到“记录集”。要访问语句中后续命令的结果,请调用 NextRecordset 方法。

只要有其他的结果,并且包含复合语句的 Recordset 未被跨进程边界调度,则 NextRecordset 方法将继续返回 Recordset 对象。如果行返回命令没有返回记录,则返回的 Recordset 对象将为空;在确认 BOF 和 EOF 都为 True 的情况下可验证这种情况。如果非按行返回命令成功执行,则返回的 Recordset 对象将关闭,通过测试 Recordset 的 State 属性可以测试这种情况。如果没有其他的结果,“记录集”将设置为 Nothing

远程数据服务用法   NextRecordset 方法对客户端的 Recordset 对象不可用。

如果在立即更新模式下进行编辑,调用 NextRecordset 方法将产生错误。应首先调用 Update 或 CancelUpdate 方法。

如果需要通过填写 Parameters 集合或者通过使用原有的 OpenExecute 调用传送数组为复合语句中的多个命令传送参数,则参数在集合或数组中的次序必须与它们在命令序列中各自命令的次序相同。在读取输出参数值之前必须读取所有结果。

在调用 NextRecordset 方法时,ADO 仅执行语句中的下一条命令。如果在单步执行整个命令语句之前显式关闭 Recordset 对象,则 ADO 不执行其余的命令。

 

  adodb.recordset获取多个数据结果集示例代码如下

'多个sql select语句,返回多个结果集合
sSQL = "SELECT categoryId, categoryName FROM Categories WHERE categoryId > 3"
sSQL = sSQL & ";SELECT RegionId , RegionDescription FROM Region"
'数据驱动
sConnectString = "DRIVER={sql server};SERVER=localhost;" & _
                 "DATABASE=northwind;UID=sa;PWD=" 
'获取多个结果结合,代码和平时的一样
set oRS = Server.CreateObject("ADODB.Recordset")
oRs.Open SQL, sConnectString
'W遍历Categories数据表
Do While Not oRs.EOF
   '处理程序
   oRs.MoveNext
Loop
Set oRS = oRS.NextRecordset()''''''''''关键,移动到下一个结果集合,即Region表,如果还有结果结合,可以使用NextRecordset继续移动到下一个结果集
Do While Not oRs.EOF
   '处理程序
   oRs.MoveNext
Loop
'资源释放
oRS.Close
Set oRS = Nothing

 



原创文章,转载请注明出处:adodb.recordset获取多个数据结果集
评论(0)Web开发网
阅读(91)喜欢(0)不喜欢(0)Asp/VBScript