ASP的NextRecordset和GetRows方法

文章来源:http://www.joyiu.com/article.asp?id=56

NextRecordset和GetRows是RecordSet的两个属性对提高批量查询速度很有效果,大家可能用的很少,分享一下这两个方法的用法:

GetRows方法:将RecordSet记录集提取到一个二维数组中,我们对RecordSet数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用源数据操作,rs.movnext, while not rs.eof等可以省掉。

NextRecordset方法:access不能使用,一次提交多个查询,形成多个RecordSet结果集的情况下,提供一个离开当前工作的RecordSet,转移到下一个RecordSet的方法。主要是用在多个select形成的结果集的情况。示例如下:

查询记录

    set rs=conn.execute(“select Ca1,Ca2,Ca3,Ca4 from TableA select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB”)

    ‘执行后将产生两个select的结果集,当前第一个select的RecordSet处于激活状态。

    arrA=rs.GetRows’取得第一个查询结果的二维数组

    set rs=rs.NextRecordset‘激活下一个RecordSet

    arrB=rs.GetRows’取得第二个查询结果的二维数组

    set rs=nothing‘释放数据库对象


这样,我们所有关于数据库的数据提取完成,用最早的时间释放数据库资源。

注意,GetRows方法得到的数组,第一维代表列,第二维代表行。

   For i=0 to UBound(arrA,2)

    response.write(“<tr>”)

    response.write(“<td>字段1:”&arrA(i,0)&“</td>”)

    response.write(“<td>字段2:”&arrA(i,1)&“</td>”)

    response.write(“<td>字段3:”&arrA(i,2)&“</td>”)

    response.write(“<td>字段4:”&arrA(i,3)&“</td>”)

    response.write(“</tr>”)

    Next

    response.write(“</table>”)

    ’第二个select表循环

    response.write(“<p>表二:</p><table>”)

    For i=0 to UBound(arrB,2)

    response.write(“<tr>”)

    response.write(“<td>字段1:”&arrB(i,0)&“</td>”)

    response.write(“<td>字段2:”&arrB(i,1)&“</td>”)

    response.write(“<td>字段3:”&arrB(i,2)&“</td>”)

    response.write(“<td>字段4:”&arrB(i,3)&“</td>”)

    response.write(“<td>字段5:”&arrB(i,4)&“</td>”)

    response.write(“</tr>”)

    Next

    response.write(“</table>”)

优点:

1、使用NextRecordSet,可以处理多个select语句一次发送形成的结果集,减少网络流量,必定加快速度!

2、使用GetRows将记录集提取到数组中(内存操作,因此记录集不能太大)用内存的数组工作,而且省掉eof、MoveNext等判断,速度更快!

3、最最主要的,我们利用上二者,一次性将所有的数据提完,快速断开数据库连接和销毁建立的RecordSet数据库对象,大大减少网络流量!性能自然要提高很多!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值