把RS.GetRows看得更清楚

用过Rs.GetRow的兄弟都知道Rs.GetRow可以更有效率地获取小容量数据(不适合大容量数据,尤其涉及大对象的时候,容易暴掉,我就爆过一次),PuterJam应用得不错的说。

但是Rs.GetRow返回的是一个二维数组,我们经常不知道哪段对哪段。这个很麻烦,于是编了一小段程序方便调试用:

Dim ds
    Set objRS=objConn.Execute("SELECT * FROM [blog_Upload] WHERE ([ul_Quote] LIKE '%" & CStr(ID) & "%') ")
        ds=objRS.GetRows
    objRS.Close()
    Set objRS=Nothing

' 建立一个表格
Response.Write "Written By Sipo(www.dc9.cn)<table align=""center"" border=""1"">"
Response.Write vbcrlf
Response.Write "<tr><td></td>"
For j = 0 To UBound(ds, 1)
Response.Write "<td>ds("&j&",X)</td>"
Next
Response.Write "</tr>"
' 每一行
  For i = 0 To UBound(ds, 2)
    Response.Write "<tr><td>ds(X,"&i&")</td>"& vbcrlf
    ' 每一列
    For j = 0 To UBound(ds, 1)
      Response.Write "<td>"
      If IsNull(ds(j, i)) Then 
      Response.Write "Null"
      Else
      Response.Write ds(j, i)
      End If
      Response.Write "<br>"
      Response.Write "<b>ds("&j&","&i&")</b>"
      Response.Write "</td>"
    Next

Response.Write "</tr>" & vbcrlf
  Next

Response.end

--------------------------------------------------------------------------------

献给菜鸟们:
关于GetRows的小资料:

ADO也提供更有效率方法来取得数据。GetRows 方法传回一个二维的数组变量,每一行对应Recordset中的一笔记录,且每一列对应到记录中的字段。此方法的语法如下:

varArray = rs.GetRows([Rows], [Start], [Fields])

Rows 是要读取记录的数量;如果想要取得Recordset所有记录,可用-1或省略此参数。Start 是指出第一个被读取记录的书签;也可以是下列列举常数中的一个:0-adBookmarkCurrent(目前记录)、1-adBookmarkFirst(第一笔记录)、或2-adBookmarkLast(最后记录)。

Fields 是可选择的字段名称数组,其用来限制要读取的数据量。(也可指定单一字段名称、单一字段索引、或者一个字段索引数组)。当设定 Rows 为少于Recordset记录笔数时,第一笔未读取的记录变成现行记录。若省略 Rows 参数或设定为-1-adGetRowsRest或大于未读取的笔数时,GetRows 方法会读取所有记录并让Recordset在EOF状态,而不会产生任何错误。

当处理目的变量数组的数据时,应该记得数据储存方式是有点相反的感觉:数组中第一维定义Recordset的字段(数据行),第二维定义Recordset的数据列。

GetRows 方法通常比一次读一笔记录的循环要来得快些,但使用这方法时,必须确定Recordset未包含太多记录;否则,会很容易以一个非常大的变量数组来填满所有内存。基于相同的原因,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)字段;若如此做的化,应用程序一定会爆掉,特别是对于较大的Recordset而言。最后,记住此方法传回的变量数组是以0为基底的;传回记录的笔数是UBound(values,2)+1,传回字段数是UBound(value, 1)+1。

(0)

相关推荐

  • 把RS.GetRows看得更清楚

    用过Rs.GetRow的兄弟都知道Rs.GetRow可以更有效率地获取小容量数据(不适合大容量数据,尤其涉及大对象的时候,容易暴掉,我就爆过一次),PuterJam应用得不错的说. 但是Rs.GetRow返回的是一个二维数组,我们经常不知道哪段对哪段.这个很麻烦,于是编了一小段程序方便调试用: Dim ds     Set objRS=objConn.Execute("SELECT * FROM [blog_Upload] WHERE ([ul_Quote] LIKE '%" &

  • 9个小技巧让你的Java if else看起来更优雅

    前言 if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码: 是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢? 我们本文提供了 9 种方法来解决掉那些"烦人"的 if else,一起来看吧. 1.使用 return 我们使用 return 去掉多余的

  • 成熟的定义看起来更象成功

    成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不再需要对别人察言观色的从容,一种终于停止向周围申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度. 只有波涛汹涌的大海,才能创造出沙滩的光洁与柔软:而平静的湖边,只有让污泥环绕.  苦难,对于天才是一块垫脚石,对于能干的人是一笔财富,对于弱者是一个万丈深渊.  当狂风在你耳边呼啸时,你只当它微风拂面:当暴雨在你眼前倾泻时,你只当它屋檐滴水:当闪电在你头顶肆虐时,你只当它萤火流逝,人决不能在

  • NextRecordset 和 GetRows 双簧合奏

    NextRecordset 和 GetRows 大家可能用的很少! 最近使用使用,不错的好东东! 对提高批量查询,查询纪录集不是巨海量的情况很有效果 NextRecordset 和 GetRows 是Recordset的两个属性(属性还是方法我是常混淆是非#$#$,弄不清四下五除一) GetRows ---> 将recordset记录集提取到一个二维数组中,我们对recordset数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用元数据操作,rs.movnext, while not r

  • set rs=conn.execute,set rs=server.createobject(“ADODB.recordset”)的性能对比

    经常用asp的同行,可能会建议用set rs=conn.execute(sql)来代替set rs=server.createobject("ADODB.recordset"):rs.open conn,sql,1,1.还有一些同行更提出了用set rs=conn.execute(sql):res=rs.getRows(100)来优化ASP程序.其实在没有做此实验前,我也是很相信这种方法的.实际效果果真如此吗?经过一番测试,我发现结果远非如此,set rs=server.createo

  • asp中在JScript中使用RecordSet对象的GetRows

    写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript.但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法. 在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在取出数组后尽早释放Recor

  • asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明

    1. Rs.Open SQL,Conn,A,B,C 2. Conn.Execute(SQL,RowsAffected,C) 一.Conn.Execute(SQL,RowsAffected,C) 参数含义: SQL的值可以是SQL语句.表名.存储过程名,也可以是数据提供者所能接受的任意字符串.为了提高性能,最好为C参数指定合适的值 可选参数RowsAffected 1.一个Insert.Update或Delete查询执行以后,RowsAffected返回所影响的数目,这些查询会返回一个关闭的Rec

  • js性能优化 如何更快速加载你的JavaScript页面

    确保代码尽量简洁 不要什么都依赖JavaScript.不要编写重复性的脚本.要把JavaScript当作糖果工具,只是起到美化作用.别给你的网站添加大量的JavaScript代码.只有必要的时候用一下.只有确实能改善用户体验的时候用一下. 尽量减少DOM访问 使用JavaScript访问DOM元素很容易,代码更容易阅读,但是速度很慢.下面介绍几个要点:限制使用JavaScript来修饰网页布局,把针对访问元素的引用缓存起来.有时,当你的网站依赖大量的DOM改动时,就应该考虑限制你的标记.这是改用

  • 能说明一下GETROWS的用法吗?

    举例如下:    <HTML>    <HEAD>    <TITLE>精彩春风之GETROWS用法示例</TITLE>    </HEAD>    <BODY BGColor=ffffff Text=000000>    <%    Set cn = Server.CreateObject("ADODB.Connection")    cn.Open Application("guestDSN&q

  • 用存储过程、GetRows()、抽取10万条数据的速度测试

    现有10W条数据,Access数据库保存 通过正常提取:  复制代码 代码如下: <%  Set conn= Server.CreateObject("ADODB.Connection")  c&Server.MapPath("db2.mdb")  conn.Open connstr Set rs = Server.CreateObject ("ADODB.Recordset")  sql = "Select * from

随机推荐