把RS.GetRows看得更清楚
把RS.GetRows看得更清楚
发布时间:2016-12-29 来源:查字典编辑
摘要:用过Rs.GetRow的兄弟都知道Rs.GetRow可以更有效率地获取小容量数据(不适合大容量数据,尤其涉及大对象的时候,容易暴掉,我就爆过...

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

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

Dimds

SetobjRS=objConn.Execute("SELECT*FROM[blog_Upload]WHERE([ul_Quote]LIKE'%"&CStr(ID)&"%')")

ds=objRS.GetRows

objRS.Close()

SetobjRS=Nothing

'建立一个表格

Response.Write"WrittenBySipo(www.dc9.cn)<tablealign=""center""border=""1"">"

Response.Writevbcrlf

Response.Write"<tr><td></td>"

Forj=0ToUBound(ds,1)

Response.Write"<td>ds("&j&",X)</td>"

Next

Response.Write"</tr>"

'每一行

Fori=0ToUBound(ds,2)

Response.Write"<tr><td>ds(X,"&i&")</td>"&vbcrlf

'每一列

Forj=0ToUBound(ds,1)

Response.Write"<td>"

IfIsNull(ds(j,i))Then

Response.Write"Null"

Else

Response.Writeds(j,i)

EndIf

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(BinaryLargeObject)或CLOB(CharacterLargeObject)字段;若如此做的化,应用程序一定会爆掉,特别是对于较大的Recordset而言。最后,记住此方法传回的变量数组是以0为基底的;传回记录的笔数是UBound(values,2)+1,传回字段数是UBound(value,1)+1。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类