Rs.GetRows(1):1表示只返回一行记录
Rs.GetRows(-1):-1表示默认值,返回所有记录
使用GetRows方法生成1个二维数组
用它可以大幅提升ASP的效能.
<%
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
conn.Open "Provider="Microsoft.Jet.OLEDB.4.0;" Data Source=" & Server.MapPath("db2.mdb")
cmd.ActiveConnection = conn
cmd.CommandText = "Select * from people order by id desc"
Set rs = cmd.Execute
rsArray = rs.GetRows()'Rs.GetRows(N):N代表获取记录数量
For i = 0 To UBound(rsArray, 2)
Response.Write rsArray(0, i)&" | "
Next
%>
10W条记录耗时187.500毫秒,总测试平均值在0.2秒左右
GetRows()方法是将数据从 Recordset 复制到二维数组中,这是一个二维数组,第一个下标标识字段,第二个则标识记录号
所以rsArray = rs.GetRows()
rsArray(0, 0)就表示记录集第一行的第一字段值
rsArray(1, 0)就表示记录集第一行的第二字段值
数组的数据是保存在内存中的,这就从根本上解决了每次显示记录还需向数据库请求的麻烦。
再比如一个BLOG分类的表 b_cat,结构和数据如下:
ID | Title | Intro
------------------------------
1 | 新闻 | 这里是新闻
2 | 文章 | 这里是文章
3 | 下载 | 这里是下载
这样表建立好了,数据也有了,下面用GetRows 方法
Dim Rs_Cat
Dim Arr_Cat
Set Rs_Cat="Conn.ExeCute(""Select ID,Title,Intro FROM b_Cat orDER BY ID ASC")
Arr_Cat="Rs_Cat.GetRows
Set Rs_Cat="Nothing
把表数据导出到数组!下面将遍历这个数组
Dim Arr_CatNumS,Arr_CatNumI
Arr_CatNumS="Ubound(Arr_Cat,2)" '得到数组中数据的下标
For Arr_CatNumI="0" To Arr_CatNumS
Response.Write("ID:"&Arr_Cat(0,Arr_CatNumI)&" | 标题:"&Arr_Cat(1,Arr_CatNumI)&" | 介绍:"&Arr_Cat(2,Arr_CatNumI)&"<br>")
Next
于是,输出的数据为:
ID:1 | 标题:新闻 | 介绍:这里是新闻
ID:2 | 标题:文章 | 介绍:这里是文章
ID:3 | 标题:下载 | 介绍:这里是下载