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 對象。

相關詞條

相關搜索

其它詞條