ADO方法可以进行有效地获取得数据。GetRows 方法传回一个二维的数组变量,每一行对应Recordset中的一笔记录,且每一列对应到记录中的字段。此方法的语法如下: 欢迎大家进行学习思考。
Rows 是要读取记录的数量;如果想要取得Recordset所有记录,可用-1或省略此参数。Start 是指出第一个被读取记录的书签;也可ADO方法以是下列列举常数中的一个:0-adBookmarkCurrent(目前记录)、1-adBookmarkFirst(第一笔记录)、或2-adBookmarkLast(最后记录)。
Fields 是可选择的字段名称数组,其用来限制要读取的数据量。(也可指定单一字段名称、单一字段索引、或者一个字段索引数组ADO方法)。当设定 Rows 为少于Recordset记录笔数时,第一笔未读取的记录变成现行记录。
若省略 Rows 参数或设定为-1-adGetRowsRest或大于未读取的笔数时,GetRows 方法会读取所有记录并让Recordset在EOF状态,而不会产生任何错误当处理目的变量数组的数据时,应该ADO方法记得数据储存方式是有点相反的感觉:数组中第一维定义Recordset的字段(数据行),第二维定义Recordset的数据列。
GetRows 方法通常比一次读一笔记录的循环要来得快ADO方法些,但使用这方法时,必须确定Recordset未包含太多记录;否则,会很容易以一个非常大的变量数组来填满所有内存。基于相同的原因,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)字段;若如此做的化,应用程序一定会爆掉,特别是对于较大的Recordset而言。最后,记住此方法传回的变量数组是以0为基底的;传回记录的笔数是UBound(values,2)+1,传回字段数是UBound(value, 1)+1。
但是每次使用这些特性时都会造成效率降低。我们推荐主要ADO方法在设计时和ad-hoc应用程序中使用这些特性。在可能的情况下,明确地指定大纲和元数据,包括在数据集中定义表和列,定义数据适配器的Command属性,定义Command的Parameter信息。#t#
如果你希望返回单个值,例如Count(*)、 Sum(ADO方法Price)、或者Avg(Quantity),你可以使用Command.ExecuteScalar。ExecuteScalar返回第一行第一列的值,返回结果集是数量值。ExecuteScalar通过一步完成不仅简化了代码而且提高了性能,而这些工作在使用DataReader时将需要两个处理步骤。
当使用不返回行的SQL语句时,类似修改ADO方法数据(例如插入、更新或者删除)或者只返回输出参数或值,使用ExecuteNonQuery。它通过建立一个空DataReader删除了任何必要的处理。