网络编程
位置:首页>> 网络编程>> Asp编程>> RS.GETROWS使用详解

RS.GETROWS使用详解

 来源:中国软件 发布时间:2008-01-16 13:21:00 

标签:GETROWS,rs,sql,数据

  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的数据列。以下有个加载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。

GetString 方法跟 GetRows 是类似的,不过其传回以单一字符串形式存在的多重记录。

etString 语法如下:

GetString([Format], [NumRows], [ColDelimiter], [RowDelimiter], [NullExpr])


Format 是结果的格式。GetString 还可能支持更多格式,但是目前唯一支持的格式是2- adClipString,所以实际上没有任何选择。NumRows 是要取得的列数。(使用-1或省略此参数来读取所有剩下的记录。)ColDelimiter 是行的分隔字符(预设为Tab字符)。RowDelimiter 为记录的分隔字符(预设为换行字符)。NullExpr 是用来表示Null字段的字符串(预设为空字符串)。文件中说明只有当Format= adClipString时,最后三个参数才可使用,但是这警告没有多大意义,因为(如之前所提)此格式是目前唯一支持的。以下有个例子,其透过 GetString 方法来将数据汇出成以分号分隔的文字文件:


Dim i As Long
Open "datafile.txt" For Output As #1
For i = 0 To rs.Fields.Count _ 1          ' Export field names.
    If i > 0 Then Print #1, ";";
    Print #1, rs.Fields(i).Name;
Next
Print #1, ""
rs.MoveFirst                              ' Export data.
Print #1, rs.GetString(, , ";", vbCrLf);  ' Don't add an extra CR-LF here.
Close #1


GetString 方法不允许只汇出字段的子集合,也不允许修改汇出字段的顺序。如果需要这些额外的功能,应该使用 GetRows 方法且自行建立结果字符串。

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com