ADO Recordset 對(duì)象
ADO Recordset 對(duì)象用于容納一個(gè)來自數(shù)據(jù)庫表的記錄集。一個(gè) Recordset 對(duì)象由記錄和列(字段)組成。
在 ADO 中,此對(duì)象是最重要且最常用于對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行操作的對(duì)象。
ProgID
set objRecordset=Server.CreateObject("ADODB.recordset")
當(dāng)您首次打開一個(gè) Recordset 時(shí),當(dāng)前記錄指針將指向第一個(gè)記錄,同時(shí) BOF 和 EOF 屬性為 False。如果沒有記錄,BOF 和 EOF 屬性為 True。
Recordset 對(duì)象能夠支持兩種更新類型:
立即更新 - 一旦調(diào)用 Update 方法,所有更改被立即寫入數(shù)據(jù)庫。批更新 - provider 將緩存多個(gè)更改,然后使用 UpdateBatch 方法把這些更改傳送到數(shù)據(jù)庫。
在 ADO,定義了 4 中不同的游標(biāo)(指針)類型:
•動(dòng)態(tài)游標(biāo) - 允許您查看其他用戶所作的添加、更改和刪除
•鍵集游標(biāo) - 類似動(dòng)態(tài)游標(biāo),不同的是您無法查看有其他用戶所做的添加,并且它會(huì)防止您訪問其他用戶已刪除的記錄。其他用戶所做的數(shù)據(jù)更改仍然是可見的。
•靜態(tài)游標(biāo) - 提供記錄集的靜態(tài)副本,可用來查找數(shù)據(jù)或生成報(bào)告。此外,由其他用戶所做的添加、更改和刪除將是不可見的。當(dāng)您打開一個(gè)客戶端 Recordset 對(duì)象時(shí),這是唯一被允許的游標(biāo)類型。
•僅向前游標(biāo) - 只允許在 Recordset 中向前滾動(dòng)。此外,由其他用戶所做的添加、更改和刪除將是不可見的。
可通過 CursorType 屬性或 Open 方法中的 CursorType 參數(shù)來設(shè)置游標(biāo)的類型。
注釋:并非所有的提供者(providers)支持 Recordset 對(duì)象的所有方法和屬性。
想了解更多ADO Recordset 對(duì)象的朋友可以到這里查看更多內(nèi)容。
如果單單是讀取,不涉及更新操作,那就用1,1
如果涉及讀取及更新操作,可以用1,3 或3,2
Recordset對(duì)象的Open方法原型:
Open([Source],[ActiveConnection],[CursorType],[LockType],[Options])
CursorType游標(biāo)類型:
Const adOpenForwardOnly = 0
前向游標(biāo),為缺省游標(biāo),提供最快的運(yùn)行性能。用它打開recordset,從對(duì)至尾順序取得所有結(jié)果。它不支持向后滾動(dòng),只允許在結(jié)果間單向移動(dòng)。
Const adOpenKeyset = 1
靜態(tài)游標(biāo),反映第一次打開游標(biāo)時(shí)表中數(shù)據(jù)的狀態(tài),游標(biāo)無法查明底層表中的數(shù)據(jù)行是否更新過、刪除過或添加了新的數(shù)據(jù)。不過與只能前移的洲標(biāo)不同,靜態(tài)游標(biāo)可以在結(jié)果間前后滾動(dòng)。
Const adOpenDynamic = 2
鍵盤驅(qū)動(dòng)的游標(biāo),可以查詢表中底層數(shù)據(jù)行的某些變化,但不是全部。它特別是可以準(zhǔn)確反映數(shù)據(jù)是否更新過。但它不能查明其它用戶是否曾刪除過數(shù)據(jù)行(刪除掉的數(shù)據(jù)行在recordset中會(huì)留下空洞)。鍵盤驅(qū)動(dòng)的游標(biāo)支持在結(jié)果間前后滾動(dòng)。
Const adOpenStatic = 3
動(dòng)態(tài)游標(biāo),是最豐富的游標(biāo)類型。游標(biāo)打開時(shí)可以查詢其他用戶對(duì)表的任何改動(dòng),而且支持滾動(dòng)。
LockType加鎖類型:
Const adLockReadOnly = 1
缺省的上鎖類型,只讀方式上鎖允許多個(gè)用戶同時(shí)讀取同樣的數(shù)據(jù),但不能改變數(shù)據(jù)。
Const adLockPessimistic = 2
以悲觀上鎖方式打開數(shù)據(jù)對(duì)象。該方式假定在你編輯記錄時(shí)會(huì)有其它用戶訪問數(shù)據(jù)。此時(shí)一旦你開始編輯記錄,其它用戶就不能訪問該數(shù)據(jù)。
Const adLockOptimistic = 3
以樂觀上鎖方式打開數(shù)據(jù)對(duì)象。該方式假定在你編輯記錄時(shí)不會(huì)有其它用戶訪問數(shù)據(jù)。在完成改變之前,其它用戶不能訪問該記錄。
Const adLockBatchOptimistic = 4
執(zhí)行多行批處理更新時(shí)使用這種類型
Options參數(shù):
Options參數(shù)標(biāo)明用來打開記錄集的命令字符串的類型。告訴ADO被執(zhí)行的字符串內(nèi)容的有關(guān)信息有助于高效地執(zhí)行該命令字符串。
adCMDTable。被執(zhí)行的字符串包含一個(gè)表的名字。
adCMDText。被執(zhí)行的字符串包含一個(gè)命令文本。
adCMDStoredProc。被執(zhí)行的字符串包含一個(gè)存儲(chǔ)過程名。
adCMDUnknown。不指定字符串的內(nèi)容。(這是缺省值。)
簡單點(diǎn)就是:
RS.OPEN SQL,CONN,A,B
A: ADOPENFORWARDONLY(=0) 只讀,且當(dāng)前數(shù)據(jù)記錄只能向下移動(dòng)
ADOPENSTATIC(=3) 只讀,當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)
ADOPENKEYSET(=1) 可讀寫,當(dāng)前數(shù)據(jù)記錄可自由移動(dòng)
ADOPENDYNAMIC(=2) 可讀寫,當(dāng)前數(shù)據(jù)記錄可自由移動(dòng),可看到新增記錄
B: ADLOCKREADONLY(=1) 默認(rèn)值,用來打開只讀記錄
ADLOCKPESSIMISTIC(=2) 悲觀鎖定
ADLOCKOPTIMISTIC(=3) 樂觀鎖定
ADLOCKBATCHOPTIMISTIC(=4) 批次樂觀鎖定