Recordset對象

Recordset對象

Recordset 對象。使用 ADO 時,通過 Recordset 對象可對幾乎所有數據進行操作。所有 Recordset (行)和欄位(列)進行構造。由於提供者所支持的功能不同,某些 Recordset 方法或屬性有可能無效。

基本介紹

  • 中文名Recordset對象
  • 作用:創建 Recordset 對象
  • 分類:用來操作來自提供者的數據
  • 屬於:對象均使用記錄
說明,ADO Recordset,ProgID,屬性,方法,事件,集合,Fields 集合的屬性,Properties 集合的屬性,游標類型,其它注意事項,

說明

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。
Bookmark
設定或返回一個書籤。此書籤保存當前記錄的位置。
CacheSize
設定或返回能夠被快取的記錄的數目。
CursorLocation
設定或返回遊標服務的位置。
CursorType
設定或返回一個 Recordset 對象的游標類型。
DataMember
設定或返回要從 DataSource 屬性所引用的對象中檢索的數據成員的名稱。
DataSource
指定一個包含要被表示為 Recordset 對象的數據的對象。
EditMode
返回當前記錄的編輯狀態。
EOF
如果當前記錄的位置在最後的記錄之後,則返回 true,否則返回 false。
Filter
返回一個針對 Recordset 對象中數據的過濾器。
Index
設定或返回 Recordset 對象的當前索引的名稱。
LockType
設定或返回當編輯 Recordset 中的一條記錄時,可指定鎖定類型的值。
MarshalOptions
設定或返回一個值,此值指定哪些記錄被返回伺服器。
MaxRecords
設定或返回從一個查詢返回 Recordset 對象的的最大記錄數目。
PageCount
返回一個 Recordset 對象中的數據頁數。
PageSize
設定或返回 Recordset 對象的一個單一頁面上所允許的最大記錄數。
RecordCount
返回一個 Recordset 對象中的記錄數目。
Sort
設定或返回一個或多個作為 Recordset 排序基準的欄位名。
Source
設定一個字元串值,或一個 Command 對象引用,或返回一個字元串值,此值可指示 Recordset 對象的數據源。
State
返回一個值,此值可描述是否 Recordset 對象是打開、關閉、正在連線、正在執行或正在取回數據。
Status
返回有關批更新或其他大量操作的當前記錄的狀態。
StayInSync
設定或返回當父記錄位置改變時對子記錄的引用是否改變。

方法

方法
描述
AddNew
創建一條新記錄。
Cancel
撤銷一次執行。
CancelBatch
撤銷一次批更新。
CancelUpdate
撤銷對 Recordset 對象的一條記錄所做的更改。
Clone
創建一個已有 Recordset 的副本。
Close
關閉一個 Recordset。
CompareBookmarks
比較兩個書籤。
Delete
刪除一條記錄或一組記錄。
Find
搜尋一個 Recordset 中滿足指定某個條件的一條記錄。
GetRows
把多條記錄從一個 Recordset 對象中拷貝到一個二維數組中。
GetString
將 Recordset 作為字元串返回。
Move
在 Recordset 對象中移動記錄指針。
MoveFirst
把記錄指針移動到第一條記錄。
MoveLast
把記錄指針移動到最後一條記錄。
MoveNext
把記錄指針移動到下一條記錄。
NextRecordset
通過執行一系列命令清除當前 Recordset 對象並返回下一個 Recordset
MovePrevious
把記錄指針移動到上一條記錄。
Open
打開一個資料庫元素,此元素可提供對表的記錄、查詢的結果或保存的 Recordset 的訪問。
Requery
通過重新執行對象所基於的查詢來更新 Recordset 對象中的數據。
Resync
從原始資料庫刷新當前 Recordset 中的數據。
Save
把 Recordset 對象保存到 file 或 Stream 對象中。
Seek
搜尋 Recordset 的索引以快速定位與指定的值相匹配的行,並使其成為當前行。
Supports
返回一個布爾值,此值可定義 Recordset 對象是否支持特定類型的功能。
Update
保存所有對 Recordset 對象中的一條單一記錄所做的更改。
UpdateBatch
把所有 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 中的當前位置更改後被觸發。
RecordChangeComplete
一條記錄更改之後被觸發。
WillChangeField
在 Field 對象的值更改之前被觸發
RecordsetChangeComplete
在 Recordset 更改之後被觸發。
WillChangeRecord
在一條記錄更改之前被觸發。
WillChangeRecordset
在 Recordset 更改之前被觸發。
WillMove
在 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 對象。

相關詞條

熱門詞條

聯絡我們