大家可能经常会遇到这种情况:
- sql="select * from table"
- set rs=conn.execute(sql)
以上这两句执行完之后,如果使用response.write rs.recordcount,就会得到结果-1,但这个时候,记录集rs当中其实是有记录的。为了得到正确的记录总数,我们使用getrows.
- sql="select * from table"
- set rs=conn.execute (sql)
-
arrA=rs.getrows
- response.write ubound(arrA,2)+1
就会得到记录集的记录总数
- response.write ubound(arrA,1)+1
就会得到记录集的总列数
==========================================================
另外,还有一种获取记录总数的方法:
- jls= conn.execute("Select count(*) From table").getstring
这时候,变量jls的值,便是记录总数了
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的资料列。以下有个载入Recordset内所有记录某三个栏位的范例:
- Dim values As Variant, fldIndex As Integer, recIndex As Integer
-
values = rs.GetRows(, , Array("LastName", "FirstName", "BirthDate"))
-
For recIndex = 0 To UBound(values, 2)
-
For fldIndex = 0 To UBound(values)
- Print values(fldIndex, recIndex),
-
Next
- Print
-
Next
GetRows 方法通常比一次读一笔记录的回圈要来得快些,但使用这方法时,必须确定Recordset未包含太多记录;否则,会很容易以一个非常大的变数阵列来填满所有记忆体。基於相同的原因,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)栏位;若如此做的化,应用程式一定会爆掉,特别是对於较大的Recordset而言。最后,记住此方法传回的变数阵列是以0为基底的;传回记录的笔数是UBound(values,2)+1,传回栏位数是UBound(value, 1)+1。
分享到:
相关推荐
ASP技巧rs.getrows方法
把RS.GetRows看得更清楚
getrows的用法,帮助我们更好的解决sql问题
Data Source=”&Server.MapPath(“db2.mdb”)conn.Open connstrSet rs = Server.CreateObject (“ADODB.Recordset”)sql = “Select * from people order by id desc”rs.Open sql,conn,1,1Do Wh
举例如下: <... Set cn = Server.CreateObject(“ADODB.Connection”) cn.Open Application(“guestDSN”) sql = “SELECT * FROM authors” Set RS = cn.Execute(sql) ary = rs.GetRows(10) rs.close
还有一些同行更提出了用set rs=conn.execute(sql):res=rs.getRows(100)来优化ASP程序。其实在没有做此实验前,我也是很相信这种方法的。实际效果果真如此吗?经过一番测试,我发现结果远非如此,set rs=server....
GetRows 方法 将 Recordset 对象的多个记录复制到数组中。 语法 代码如下: array = recordset.GetRows( Rows, Start, Fields ) 返回值 返回二维数组。 参数 Rows 可选,长整型表达式,指定要检索记录数。默认值为 ...
dAdapter.fillDataTable(dtb, rs); //加行 dtb.getRows().addNew(); //加列 DataColumn dtm=new DataColumn("ttt", 1); dtb.getColumns().add(dtm); //给一行赋值 dtb.getRows().get(0).setString(3...
dAdapter.fillDataTable(dtb, rs); //加行 dtb.getRows().addNew(); //加列 DataColumn dtm=new DataColumn("ttt", 1); dtb.getColumns().add(dtm); //给一行赋值 dtb.getRows().get(0).setString(3...
在ASP中,如果你使用Set ors=oConn.Execute()来创建RecordSet对象,再使用RecordSet.RecordCount获取记录数时,你会发现它的值为-1,这时,我们可以使用GetRows方法来获取记录数。
1. Kettle循环获取结果集并传入转换里面 是Kettle循环转换(t1.ktr)中的结果集,放到转换2(var.ktr)中,输出到本地txt文件中 1.1 job j1.kjb JavaScript var prevRow=previous_result.getRows();//获取上一个...
现有10W条数据,Access数据库保存 通过正常提取: 代码如下:<% Set conn= Server.CreateObject(“ADODB.Connection”) c&Server....rs.Open sql,conn,1,1 Do While Not rs.EOF Response.write rs
rem 在asp中通过getrows实现数据库记录分页的一段代码 Dim iStart, iOffset iStart = Request(“Start”) iOffset = Request(“Offset”) if Not IsNumeric(iStart) or Len(iStart) = 0 then iStart...
rem 在asp中通过getrows实现数据库记录分页的一段代码 Dim iStart, iOffset iStart = Request(“Start”) iOffset = Request(“Offset”) if Not IsNumeric(iStart) or Len(iStart) = 0 then i...
一、GetRows的使用方法:<%Set conn=Server.CreateObject(“Adodb.Connection”)conn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & Server.Mappath(“test.mdb”)Set Rs=Server....
目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................
目录 一、VBA语言基础...................................................................................................................1 第一节标识符.....................................................
Recordset 对象中GetRows的使用网页源代码.rar