一、Recordset 對象簡述
Recordset 對象表示的是來自基本表或命令執行結果的記錄全集。在任何情況下,該對象所指的當前記錄均為集合內的單條記錄。使用 Recordset 對象可以操作來自提供程序的數據,通過該對象幾乎可以對所有數據進行操作。所有 Recordset 對象均使用記錄(行)和字段(列)進行構造。Recordset 對象實際上是依附於 Connection 對象和 Command 對象之上的。通過建立及開啟一個 Connection 對象,可以與我們關心的數據庫建立連接;通過使用 Command 對象,則可以告訴數據庫我們想要做什麼:是插入一條記錄,還是查找符合條件的記錄;通過使用 Recordset 對象,則可以方便自如地操作 Command 對象返回的結果。
二、創建 Recordset 對象
要使用 Recordset 對象處理結果,首先必須創建 Recordset 對象實例。其格式如下:
Set RS=Server.CreateObject("adodb.recordset")
三、打開記錄集
RS.Open Source,ActiveConnection,CursorType,LockType,Options
所有的參數都是可選項。Source 為 Command 對象變量名、SQL 語句、表名、存儲過程調用或持久 Rcordset 文件名。
ActiveConnection 為有效的 Connection 對象變量名或包含 ConnectionString 字符串。
LockType 指定打開 Recordset 時應使用的鎖定類型。
Options 指定如何計算 Source 參數或從以前保存 Recordset 的文件中恢復 Recordset。
四、Recordset 對象的常用屬性
Recordset 對象的常用屬性<表>
屬 性 描 述 / 注 解 ActiveConnection 指定與數據提供者的連接信息,用來指定當前的 Recordset 對象屬於哪個 Connection 對象。 Source 指定 Recordset 對象的數據源,可以是一個 Command 對象名、SQL 語句、數據庫表或存儲過程 。 CoursorType 指定 Recordset 對象所使用的光標類型。 共有 4 種光標類型:0 一 前滾光標,光標只能向前移動,執行效率高。是 Cursor 的默認值;
1 一 鍵盤光標,光標可向前或向後移動,Recordset 記錄集同步反映自它創建後其他用戶所作的修改和刪除,但卻不能同步反映自它創建後其他用戶新增加的記錄;
2 一 動態光標,光標可向前或向後滾動,任何時候 Recordset 記錄集都同步反映其他用戶的任何操作;
3 一 靜態光標,光標可向前或向後移動,自創建後無法同步反映其他用戶所做的任何操作,它的功能簡單但消耗資源少。
LockType 表示編輯時記錄的鎖定類型。它決定了當不止一個用戶試圖同時改變一個記錄時,Recordset 如何處理數據記錄。 0 一 只讀鎖定,記錄只讀,不能更新 Recordset ,為 LockType 的默認值;1 一 悲觀鎖定,編輯記錄開始立刻鎖定,直到提交給數據提供者;
2 一 樂觀鎖定,一次鎖定一條記錄,只有調用 Update 方法提交數據時才鎖定記錄;
3 一 樂觀的批量更新,允許同時更新多條記錄。
Filter 用來設定一個過濾條件,以便對 Recordset 記錄進行過濾。 CacheSize 表示一個 Recordset 對象在高速緩存中的記錄數。 Maxrecords 執行一個 SQL 查詢時,返回 Recordset 對象的最大記錄數。 Bof 判斷記錄指針是否到了第一條記錄之前。 Eof 判斷記錄指針是否到了最後一條記錄之後。 RecordCount 返回 Recordset 對象的記錄數,(在使用鍵盤光標時,該屬懷返回 的可能是不太准確的數值;一般情況下,並不用這種方法來統計 Recordset 中的記錄數,因為它的性能並不穩定) Bookmark 書簽標記,用來保存當前記錄的位置。 AbsolutePosition 用來設定 Recordset 對象中當前記錄的順序位置是第幾行記錄。 PageSize 表示 Reccordset 對象的頁面大小(每頁多少條記錄),默認值為10。 PageCount 表示 Recordset 對象的頁面個數。 AbsolutePage 表示當前記錄的頁號。 EditMode 指示當前記錄的編輯狀態,0 一 已被編輯;1 一 已被修改而未提交;2 一 存入數據庫的新記錄 。 Status 對 Recordset 對象進行批量更新後,查詢當前記錄的狀態。 值 意義描述 值 意義描述 0 記錄更新成功。 1024 存在記錄鎖定,新記錄未保存。 1 新記錄。 2048 使用樂觀並發事件,未保存。 2 記錄被刪除。 4096 用戶違反完整性規則,記錄未保存。 4 記錄未被刪除。 8192很待定修改,記錄未保存。
8 記錄未被修改。 16384 與一存儲對象相沖突,記錄未保存。 16 書簽不合法,記錄未保存。 32768 內存不夠,記錄未保存。 64 影響多個記錄,未保存。 65536 用戶沒有中、足夠的權限,未保存。 128 指向一待定插入,記錄未保存。 131072 違反基本數據庫原則,記錄未保存。 256 操作被取消,記錄未保存。 262144 記錄已從數據源刪除。
五、Rcordset 對象的方法
Recordset 對象的方法<表二>
方法 描述 / 格式 / 注解 Open 打開一個 Recordset 對象。 Rs.Open[Source][,ActiveConnection][,CursorType][,LursorType][,Option] Rs :為已經建立的 Recordset 對象;Source :為可選參數,可以是一個 Command 對象名、SQL 語句、數據庫表或存儲過程;
ActiveConnection :定義與數據庫的連接信息;
CursorType :是Recordset 對象所使用的光標類型;
LockTypec 是編輯 Recordset 對象記錄時所使用的鎖定類型;
Option 指示數據提供者如何處理 Source 的內容類型,其參數值及其意義見下表:
Options值 意義描述 1 表示被執行的字符串包含一個命令文本。 2 表示被執行的字符串包含一個表名。 4 表示被執行的字符串包含一個存儲過程名。 8 沒有指定字符串的內容(這是默認值) Close 關閉一個 Recordset 對象。 但並不從內存中刪除該對象,只是無法讀取其中的數據,但仍然可以讀取它的屬性。因此一個關閉的 Recordset 對象還可以用 Open 方法打開並保持其原有屬性。 Rs.Close Rs:為已經建立的 Recordset 對象;如果正進行編輯更新數據的操作,則在使用此方法之前必須先調用 Update 和 CancelUpdate 方法。否則將會出現錯誤。 Clone 創建一個 Recordset 對象的完全拷貝,但只有所用的 Recordset 對象類型允許使用 Bookmarks時才能使用該方法。 MoveFirst 把 Recordset 指針指向第一行記錄。 Rs.MoveFirst MoveLast 把 Recordset 指針指向最後一條記錄(該 Recordset 必須支持書簽)。 Rs.MoveLast MovePrevious 把Recordset 指針上移一行(使用前應判斷 BOF 是否為真,該方法必須支持書簽)。 Rs.MovePreviors MoveNext 把Recordset 指針下移一行(使用前應判斷 EOF 是否為真)。 Rs.MoveNext Move 把Recordset 指針指向指定的記錄。 Move n [,start] n 為要移動的記錄數,取正時表示向前(下)移動,取負時表示向後(上)移動;
start 是可選參數,表示移動的起點。
GetRows 從一個 Rexordset 對象讀取一行或多行記錄到一個數組中。 Myarray=Rs.GetRows ( rows,start,fields ) Myarray 為目標數組名;Rs 為已創建的 Recordset 對象,Rows 為返回數組的行數;start 為讀取數據的起點 (書簽);Fields 為 Recordset 的字段。 NextRecordSet 清除當前的 Recordset 並執行下一條指令,以傳回下一個 Recordset 對象,如果沒有下一條指令,則返回 Nothing 給 Recordset 。 Requery 重新執行 SQL 操作,以更新 Recordset 對象中的數據。 Resync 從數據源更新當前的 Recordset 記錄,實現與數據源的同步。 Addnew 增加一條空記錄。 Rs.AddNew N 增加一條空記錄,並將數組中的元素(N)添加到這條空記錄中。 Delete 刪除當前記錄。 Delete [value] 如果 value=1(默認值)表示該方法只刪除當前記錄,value=2 表示該方法刪除所有由 Filter 屬性設定的記錄。 Update 保存當前記錄的任何變動。 Rs.Update CancelUpdate 取消前一個 Update 方法所做的一切修改。 UpdateBatch Recordset 工作在批量方式時,取消對 Recordset 的更新。 Suports 獲取創建的 Recordset 對象的能力信息。 注:使用 Move 、MoveFirst 、MoveLast 、MovePrevious 、MoveNext 方法移動記錄指針時,需要注意 Rrcordset 對象的光標類型。如“前滾光標”限制了記錄指針只能向前移動。