当前位置: 移动技术网 > IT编程>开发语言>Asp > 把RS.GetRows看得更清楚

把RS.GetRows看得更清楚

2017年12月12日  | 移动技术网IT编程  | 我要评论
用过rs.getrow的兄弟都知道rs.getrow可以更有效率地获取小容量数据(不适合大容量数据,尤其涉及大对象的时候,容易暴掉,我就爆过一次),puterjam应用得不
用过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。 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网