Recordset对象

Recordset对象

Recordset对象
Recordset 对象。使用 ADO 时,通过 Recordset 对象可对几乎所有数据进行操作。所有 Recordset (行)和字段(列)进行构造。由于提供者所支持的功能不同,某些 Recordset 方法或属性有可能无效。
  • 属于:通过 Recordset 对象可对几乎所有数据进行操作。
  • 分类:用来操作来自提供者的数据

内容简介

ADOR.Recordset 和 ADODB.Recordset 是用的 ProgID。由此产生的 Recordset 对象行为相同,与 ProgID 无关。ADOR.Recordset 随 Microsoft Internet Explorer 安装,而 ADODB.Recordset 则随 ADO 安装。Recordset 对象的行为受环境(即客户端、服务器Internet Explorer 等)的影响。

ADO Recordset

ADO Recordset 对象用于容纳一个来自数据库表的记录。一个 Recordset 对象由记录和列(字段)组成。

在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。

ProgID

set objRecordset=Server.CreateObject("ADODB.recordset") 当您首次打开一个 Recordset 时,当前记录指针将指向第一个记录,同时 BOF 和 EOF 属性为 False。如果没有记录,BOF 和 EOF 属性为 True。

Recordset 对象能够支持两种更新类型:

立即更新 - 一调用 Update 方法,所有更改被立即写入数据库。批更新 - provider 将缓存多个更改,然后使用 UpdateBatch 方法把这些更改传送到数据库。在 ADO,定义了 4 种不同的游标(指针)类型:

动态游标 - 允许您查看其他用户所作的添加、更改和删除 键集游标 - 类似动态游标,不同的是您无法查看有其他用户所做的添加,并且它会防止您访问其他用户已删除的记录。其他用户所做的数据更改仍然是可见的。

静态游标 - 提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。当您打开一个客户端 Recordset 对象时,这是唯一被允许的游标类型。仅向前游标 - 只允许在 Recordset 中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。可通过 CursorType 属性或 Open 方法中的 CursorType 参数来设置游标的类型。

注释:并非所有的提供者(providers)支持 Recordset 对象的所有方法和属性。

属性

属性

描述

AbsolutePage

设置或返回一个可指定 Recordset 对象中页码的值。

AbsolutePosition

设置或返回一个值,此值可指定 Recordset 对象中当前记录的顺序位置(序号位置)。

ActiveCommand

返回与 Recordset 对象相关联的 Command 对象。

ActiveConnection

如果连接被关闭,设置或返回连接的定义,如果连接打开,设置或返回当前的 Connection 对象。

BOF

如果当前的记录位置在第一条记录之前,则返回 true,否则返回 false。

展开表格

方法

方法

描述

AddNew

创建一条新记录。

Cancel

撤销一次执行。

CancelBatch

撤销一次批更新。

CancelUpdate

撤销对 Recordset 对象的一条记录所做的更改。

Clone

创建一个已有 Recordset 的副本。

展开表格

事件

Note: You cannot handle events using VBScript or JScript (only Visual Basic, Visual C++, and Visual J++ languages can handle events).

事件

描述

EndOfRecordset

当试图移动到超过 Recordset 结尾的行时被触发。

FetchComplete

当异步操作中的所有记录均被读取后被触发。

FetchProgress

在异步操作期间被定期地触发,报告已读取多少记录。

FieldChangeComplete

Field 对象的值更改被触发。

MoveComplete

Recordset 中的当前位置更改后被触发。

展开表格

集合

集合

描述

Fields

指示在此 Recordset 对象中 Field 对象的数目。

Properties

包含所有 Recordset 对象中的 Property 对象。

Fields集合的属性

属性

描述

Count

返回 fields 集合中项目的数目。以 0 起始。

例子:

countfields = rs.Fields.Count

Item(named_item/number)

返回 fields 集合中的某个指定的项目。

例子:

itemfields = rs.Fields.Item(1)或者 itemfields = rs.Fields.Item("Name")

Properties集合的属性

属性

描述

Count

返回 properties 集合中项目的数目。以 0 起始。

例子:

countprop = rs.Properties.Count

Item(named_item/number)

返回 properties 集合中某个指定的项目。

例子:

itemprop = rs.Properties.Item(1)或者 itemprop = rs.Properties.Item("Name")

游标类型

?? 动态游标 — 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。

?? 键集游标 — 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。

?? 静态游标 — 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。

?? 仅向前游标 — 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。

在打开 Recordset 之前设置 CursorType 属性来选择游标类型,或使用 Open 方法传递 CursorType 参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO 将默认打开仅向前游标。

如果 CursorLocation 属性被设置为 adUseClient 后打开 Recordset,则在返回的 Recordset 对象中,Field 对象的 UnderlyingValue 属性不可用。对部分提供者(例如 Microsoft ODBC Provider for OLE DB 连同 Microsoft SQL Server),可以通过使用 Open 方法传递连接字符串,根据以前定义的 Connection 对象独立地创建 Recordset 对象。ADO 仍然创建 Connection 对象,但它不将该对象赋给对象变量。不过,如果正在相同的连接上打开多个 Recordset 对象,就应该显式创建和打开 Connection 对象,由此将 Connection 对象赋给对象变量。如果在打开 Recordset 对象时没有使用该对象变量,即使在传递相同连接字符串的情况下,ADO 也将为每个新的 Recordset 创建新的 Connection 对象。

其它注意事项

打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 False。如果没有记录,BOF 和 EOF 属性设置是 True。

假设提供者支持相关的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 属性来重新确定当前记录的位置。仅向前 Recordset 对象只支持 MoveNext 方法。当使用 Move 方法访问每个记录(或枚举 Recordset)时,可使用 BOF 和 EOF 属性查看是否移动已经超过了 Recordset 的开始或结尾。

Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。

如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。

注意 要执行不使用 Command 对象的查询,应将查询字符串传递给 Recordset 对象的 Open 方法。但是,在想要保持命令文本并重复执行或使用查询参数时,仍然需要 Command 对象。

相关词条

相关搜索

其它词条