三天學好ADO之第三天

來源:互聯網
上載者:User
ado 今天來說一下Recordset對象的一些方法。
1、AddNew 方法
建立可更新 Recordset 對象的新記錄。
recordset.AddNew FieldList, Values
FieldList 可選。新記錄中欄位的單個名稱、一組名稱或序號位置。
Values 可選。新記錄中欄位的單個或一組值。如果 Fields 是數組,那麼 Values 也必須是有相同成員數的數組,否則將發生錯誤。欄位名稱的次序必須與每個數組中的欄位值的次序相匹配。

我們一般是
rs.addnew
rs("xx")=xx
rs("xx")=xx
rs.update
需要注意的是在立即更新模式(調用 Update 方法時提供者會立即將更改寫入基本資料來源)下,調用不帶參數的 AddNew 方法可將 EditMode 屬性設定為 adEditAdd。提供者將任何欄位值的更改緩衝在本地。調用 Update 方法可將新記錄傳遞到資料庫並將 EditMode 屬性重設為 adEditNone。如果傳送了 Fields 和 Values 參數,ADO 則立即將新記錄傳遞到資料庫(無須調用 Update),且 EditMode 屬性值沒有改變 (adEditNone)。
可能大家會問在ASP中使用ADO的AddNew方法和直接使用“Insert into...”語句有和不同?那種方式更好?答:ADO的AddNew方法只是將“Insert into ”語句封裝了起來,所以,當對大量資料進行操作的時候,直接使用SQL語句將會大大加快存取資料的速度,因為他減少了ADO的“翻譯”時間。

2、Delete 方法
刪除目前記錄或記錄組。
recordset.Delete AffectRecords

AffectRecords AffectEnum 值,確定 Delete 方法所影響的記錄數目,該值可以是下列常量之一。
AdAffectCurrent 預設。僅刪除目前記錄。
AdAffectGroup 刪除滿足當前 Filter 屬性設定的記錄。要使用該選項,必須將 Filter 屬性設定為有效預定義常量之一。
adAffectAll 刪除所有記錄。
adAffectAllChapters 刪除所有子集記錄。
使用立即更新模式將在資料庫中進行立即刪除,否則記錄將標記為從緩衝刪除,實際的刪除將在調用 Update 方法時進行。

3、Update 方法
儲存對 Recordset 對象的目前記錄所做的所有更改
recordset.Update Fields, Values
Fields 可選。變體型,代表單個名稱;或變體型數組,代表需要修改的欄位(一個或多個)名稱及序號位置。
Values 可選。變體型,代表單個值;或變體型數組,代表新記錄中欄位(單個或多個)值。
如果希望取消對目前記錄所做的任何更改或者放棄新添加的記錄,則必須調用 CancelUpdate 方法。

4、CancelUpdate 方法
recordset.CancelUpdate
使用 CancelUpdate 方法可取消對目前記錄所作的任何更改或放棄新添加的記錄。在調用 Update 方法後將無法撤消對目前記錄或新記錄所做的更改,如果在調用 CancelUpdate 方法時添加新記錄,則調用 AddNew 之前的目前記錄將再次成為目前記錄。如果尚未更改目前記錄或添加新記錄,調用 CancelUpdate 方法將產生錯誤。

5、Find 方法
搜尋 Recordset 中滿足指定標準的記錄。如果滿足標準,則記錄集位置設定在找到的記錄上,否則位置將設定在記錄集的末尾。
Find (criteria, SkipRows, searchDirection, start)
criteria 字串,包含指定用於搜尋的列名、比較操作符和值的語句。
SkipRows 可選,長整型值,其預設值為零,它指定當前行或 start 書籤的位移以開始搜尋。
searchDirection 可選的 SearchDirectionEnum 值,指定搜尋應從當前行還是下一個有效行開始。其值可為 adSearchForward 或

adSearchBackward。搜尋是在記錄集的開始還是末尾結束由 searchDirection 值決定。
start 可選,變體型書籤,用作搜尋的開始位置。
criteria “比較操作符”可以是“>”(大於)、“<”(小於)、“=”(等於)、“>=”(大於或等於)、“<=”(小於或等於)、“<>”

(不等於)或“like”(模式比對)。 criteria 中的值可以是字串、浮點數或者日期。字串值以單引號分界(如“state = 'WA'”)。

日期值以“#”(數字記號)分界(如“start_date > #7/22/97#”)。
需要注意的是find是不支援多欄位。但是可以用filter實現。"name='abc'"AND "city='sh'" 是不允許的

6、Move 方法
移動 Recordset 對象中目前記錄的位置
recordset.Move NumRecords, Start
NumRecords 帶符號長整型運算式,指定目前記錄位置移動的記錄數。
Start 可選,字串或變體型,用於計算書籤。也可為下列值之一:
AdBookmarkCurrent 預設。從目前記錄開始。
AdBookmarkFirst 從首記錄開始。
AdBookmarkLast 從尾記錄開始。
需要注意的是:
(1)如果 NumRecords 參數大於零,則目前記錄位置將向前移動(向記錄集的末尾)。如果 NumRecords 小於零,則目前記錄位置向後移動(向記錄集的開始)。
(2)從空的 Recordset 對象調用 Move 方法將產生錯誤。
(3)如果 Move 調用將目前記錄位置移動到首記錄之前,則 ADO 將目前記錄放置在記錄集(BOF 為 True)的首記錄之前。在 BOF 屬性已經為 True 時試圖向後移動將產生錯誤;如果 Move 調用將目前記錄位置移動到尾記錄之後,則 ADO 將目前記錄放置在記錄集(EOF 為 True)的尾記錄之後。在 EOF 屬性已經為 True 時試圖向前移動將產生錯誤。

7、MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法
在指定 Recordset 對象中移動到第一個、最後一個、下一個或前一個記錄並使該記錄成為目前記錄。
recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}
需要注意的是:
(1)使用 MoveNext 方法將目前記錄向前移動一個記錄(向 Recordset 的底部)。如果最後一個記錄是目前記錄並且調用 MoveNext 方法,則 ADO 將目前記錄設定到 Recordset (EOF 為 True)的尾記錄之後。當 EOF 屬性已經為 True 時試圖向前移動將產生錯誤。
(2)使用 MovePrevious 方法將目前記錄位置向後移動一個記錄(向記錄集的頂部)。Recordset 對象必須支援向後遊標移動;否則方法調用將產生錯誤。如果首記錄是目前記錄並且調用 MovePrevious 方法,則 ADO 將目前記錄設定在 Recordset (BOF 為 True)的首記錄之前。而 BOF 屬性為 True 時向後移動將產生錯誤。

8、Clone 方法
建立與現有 Recordset 對象相同的複製 Recordset 對象。可選擇指定該副本為唯讀。
Set rstDuplicate = rstOriginal.Clone
rstDuplicate 物件變數,標識正在建立的複製 Recordset 對象。
rstOriginal 物件變數,標識要被複製的 Recordset 對象。
使用 Clone 方法可建立多個 Recordset 對象副本,這對於希望在給定的記錄組中保留多個目前記錄十分有用。使用 Clone 方法比使用與初始定義相同的定義建立和開啟新 Recordset 對象要有效得多。
也就是說
rs.open exec,conn,1,1
rs2.open exec,conn,1,1
應該這麼改寫
rs.open exec,conn,1,1
rs2=rs.clone

需要注意的是:
(1)新棄置站台的目前記錄將設定為首記錄。
(2)關閉原始 Recordset 時並不關閉它的副本,而關閉某個副本也將不關閉原始 Recordset 或任何其他副本。

9、Close 方法
關閉開啟的對象及任何相關對象。
object.Close
需要注意的是:
(1)使用 Close 方法可關閉Recordset 對象以便釋放所有關聯的系統資源。關閉對象並非將它從記憶體中刪除,可以更改它的屬性設定並且在

此後再次開啟。要將對象從記憶體中完全刪除,可將物件變數設定為 Nothing。
(2)如果正在立即更新模式下進行編輯,調用 Close 方法將產生錯誤,應首先調用 Update 或 CancelUpdate 方法。


10、Open 方法,為什麼最後說這個,因為前面的各項屬性方法沒有弄清楚,我們是不會理解CursorType參數的
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Recordset對象可以通過Source屬性來串連Command對象。Source參數可以是一個Command對象名稱、一段SQL命令、一個指定的資料表名稱或是一個Stored Procedure。假如省略這個參數,系統則採用Recordset對象的Source屬性。ActiveConnection

Recordset對象可以通過ActiveConnection屬性來串連



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。