服务器之家

服务器之家 > 正文

把RS.GetRows看得更清楚

时间:2019-10-15 10:09     来源/作者:asp技术网

用过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.zzvips.com)<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。  

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部