国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 擴(kuò)展 > ADO > 正文

三天學(xué)好ADO之第三天

2024-09-06 20:31:23
字體:
供稿:網(wǎng)友
 

今天來說一下Recordset對(duì)象的一些方法。
1、AddNew 方法
創(chuàng)建可更新 Recordset 對(duì)象的新記錄。
recordset.AddNew FieldList, Values
FieldList   可選。新記錄中字段的單個(gè)名稱、一組名稱或序號(hào)位置。
Values   可選。新記錄中字段的單個(gè)或一組值。如果 Fields 是數(shù)組,那么 Values 也必須是有相同成員數(shù)的數(shù)組,否則將發(fā)生錯(cuò)誤。字段名稱的次序必須與每個(gè)數(shù)組中的字段值的次序相匹配。

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

2、Delete 方法
刪除當(dāng)前記錄或記錄組。
recordset.Delete AffectRecords

AffectRecords   AffectEnum 值,確定 Delete 方法所影響的記錄數(shù)目,該值可以是下列常量之一。
AdAffectCurrent 默認(rèn)。僅刪除當(dāng)前記錄。
AdAffectGroup 刪除滿足當(dāng)前 Filter 屬性設(shè)置的記錄。要使用該選項(xiàng),必須將 Filter 屬性設(shè)置為有效的預(yù)定義常量之一。
adAffectAll 刪除所有記錄。
adAffectAllChapters 刪除所有子集記錄。
使用立即更新模式將在數(shù)據(jù)庫中進(jìn)行立即刪除,否則記錄將標(biāo)記為從緩存刪除,實(shí)際的刪除將在調(diào)用 Update 方法時(shí)進(jìn)行。

3、Update 方法
保存對(duì) Recordset 對(duì)象的當(dāng)前記錄所做的所有更改
recordset.Update Fields, Values
Fields   可選。變體型,代表單個(gè)名稱;或變體型數(shù)組,代表需要修改的字段(一個(gè)或多個(gè))名稱及序號(hào)位置。
Values   可選。變體型,代表單個(gè)值;或變體型數(shù)組,代表新記錄中字段(單個(gè)或多個(gè))值。
如果希望取消對(duì)當(dāng)前記錄所做的任何更改或者放棄新添加的記錄,則必須調(diào)用 CancelUpdate 方法。

4、CancelUpdate 方法
recordset.CancelUpdate
使用 CancelUpdate 方法可取消對(duì)當(dāng)前記錄所作的任何更改或放棄新添加的記錄。在調(diào)用 Update 方法后將無法撤消對(duì)當(dāng)前記錄或新記錄所做的更改,如果在調(diào)用 CancelUpdate 方法時(shí)添加新記錄,則調(diào)用 AddNew 之前的當(dāng)前記錄將再次成為當(dāng)前記錄。如果尚未更改當(dāng)前記錄或添加新記錄,調(diào)用 CancelUpdate 方法將產(chǎn)生錯(cuò)誤。

5、Find 方法
搜索 Recordset 中滿足指定標(biāo)準(zhǔn)的記錄。如果滿足標(biāo)準(zhǔn),則記錄集位置設(shè)置在找到的記錄上,否則位置將設(shè)置在記錄集的末尾。
Find (criteria, SkipRows, searchDirection, start)
criteria   字符串,包含指定用于搜索的列名、比較操作符和值的語句。
SkipRows    可選,長(zhǎng)整型值,其默認(rèn)值為零,它指定當(dāng)前行或 start 書簽的位移以開始搜索。
searchDirection    可選的 SearchDirectionEnum 值,指定搜索應(yīng)從當(dāng)前行還是下一個(gè)有效行開始。其值可為 adSearchForward 或

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

(不等于)或“l(fā)ike”(模式匹配)。 criteria 中的值可以是字符串、浮點(diǎn)數(shù)或者日期。字符串值以單引號(hào)分界(如“state = 'WA'”)。

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

6、Move 方法
移動(dòng) Recordset 對(duì)象中當(dāng)前記錄的位置
recordset.Move NumRecords, Start
NumRecords    帶符號(hào)長(zhǎng)整型表達(dá)式,指定當(dāng)前記錄位置移動(dòng)的記錄數(shù)。
Start    可選,字符串或變體型,用于計(jì)算書簽。也可為下列值之一:
AdBookmarkCurrent 默認(rèn)。從當(dāng)前記錄開始。
AdBookmarkFirst 從首記錄開始。
AdBookmarkLast 從尾記錄開始。
需要注意的是:
(1)如果 NumRecords 參數(shù)大于零,則當(dāng)前記錄位置將向前移動(dòng)(向記錄集的末尾)。如果 NumRecords 小于零,則當(dāng)前記錄位置向后移動(dòng)(向記錄集的開始)。
(2)從空的 Recordset 對(duì)象調(diào)用 Move 方法將產(chǎn)生錯(cuò)誤。
(3)如果 Move 調(diào)用將當(dāng)前記錄位置移動(dòng)到首記錄之前,則 ADO 將當(dāng)前記錄放置在記錄集(BOF 為 True)的首記錄之前。在 BOF 屬性已經(jīng)為 True 時(shí)試圖向后移動(dòng)將產(chǎn)生錯(cuò)誤;如果 Move 調(diào)用將當(dāng)前記錄位置移動(dòng)到尾記錄之后,則 ADO 將當(dāng)前記錄放置在記錄集(EOF 為 True)的尾記錄之后。在 EOF 屬性已經(jīng)為 True 時(shí)試圖向前移動(dòng)將產(chǎn)生錯(cuò)誤。

7、MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法
在指定 Recordset 對(duì)象中移動(dòng)到第一個(gè)、最后一個(gè)、下一個(gè)或前一個(gè)記錄并使該記錄成為當(dāng)前記錄。
recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}
需要注意的是:
(1)使用 MoveNext 方法將當(dāng)前記錄向前移動(dòng)一個(gè)記錄(向 Recordset 的底部)。如果最后一個(gè)記錄是當(dāng)前記錄并且調(diào)用 MoveNext 方法,則 ADO 將當(dāng)前記錄設(shè)置到 Recordset (EOF 為 True)的尾記錄之后。當(dāng) EOF 屬性已經(jīng)為 True 時(shí)試圖向前移動(dòng)將產(chǎn)生錯(cuò)誤。
(2)使用 MovePrevious 方法將當(dāng)前記錄位置向后移動(dòng)一個(gè)記錄(向記錄集的頂部)。Recordset 對(duì)象必須支持向后游標(biāo)移動(dòng);否則方法調(diào)用將產(chǎn)生錯(cuò)誤。如果首記錄是當(dāng)前記錄并且調(diào)用 MovePrevious 方法,則 ADO 將當(dāng)前記錄設(shè)置在 Recordset (BOF 為 True)的首記錄之前。而 BOF 屬性為 True 時(shí)向后移動(dòng)將產(chǎn)生錯(cuò)誤。

8、Clone 方法
創(chuàng)建與現(xiàn)有 Recordset 對(duì)象相同的復(fù)制 Recordset 對(duì)象。可選擇指定該副本為只讀。
Set rstDuplicate = rstOriginal.Clone
rstDuplicate   對(duì)象變量,標(biāo)識(shí)正在創(chuàng)建的復(fù)制 Recordset 對(duì)象。
rstOriginal   對(duì)象變量,標(biāo)識(shí)要被復(fù)制的 Recordset 對(duì)象。
使用 Clone 方法可創(chuàng)建多個(gè) Recordset 對(duì)象副本,這對(duì)于希望在給定的記錄組中保留多個(gè)當(dāng)前記錄十分有用。使用 Clone 方法比使用與初始定義相同的定義創(chuàng)建和打開新 Recordset 對(duì)象要有效得多。
也就是說
rs.open exec,conn,1,1
rs2.open exec,conn,1,1
應(yīng)該這么改寫
rs.open exec,conn,1,1
rs2=rs.clone

需要注意的是:
(1)新創(chuàng)建副本的當(dāng)前記錄將設(shè)置為首記錄。
(2)關(guān)閉原始 Recordset 時(shí)并不關(guān)閉它的副本,而關(guān)閉某個(gè)副本也將不關(guān)閉原始 Recordset 或任何其他副本。

9、Close 方法
關(guān)閉打開的對(duì)象及任何相關(guān)對(duì)象。
object.Close
需要注意的是:
(1)使用 Close 方法可關(guān)閉Recordset 對(duì)象以便釋放所有關(guān)聯(lián)的系統(tǒng)資源。關(guān)閉對(duì)象并非將它從內(nèi)存中刪除,可以更改它的屬性設(shè)置并且在

此后再次打開。要將對(duì)象從內(nèi)存中完全刪除,可將對(duì)象變量設(shè)置為 Nothing。
(2)如果正在立即更新模式下進(jìn)行編輯,調(diào)用 Close 方法將產(chǎn)生錯(cuò)誤,應(yīng)首先調(diào)用 Update 或 CancelUpdate 方法。


10、Open 方法,為什么最后說這個(gè),因?yàn)榍懊娴母黜?xiàng)屬性方法沒有弄清楚,我們是不會(huì)理解CursorType參數(shù)的
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Recordset對(duì)象可以通過Source屬性來連接Command對(duì)象。Source參數(shù)可以是一個(gè)Command對(duì)象名稱、一段SQL命令、一個(gè)指定的數(shù)據(jù)表名稱或是一個(gè)Stored Procedure。假如省略這個(gè)參數(shù),系統(tǒng)則采用Recordset對(duì)象的Source屬性。ActiveConnection

Recordset對(duì)象可以通過ActiveConnection屬性來連接Connection對(duì)象。這里的ActiveConnection可以是一個(gè)Connection對(duì)象或是一串包含數(shù)據(jù)

庫連接信息(ConnectionString)的字符串參數(shù)。CursorType

Recordset對(duì)象Open方法的CursorType參數(shù)表示將以什么樣的游標(biāo)類型啟動(dòng)數(shù)據(jù),包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及ad

OpenStatic,分述如下:

--------------------------------------------------------------

常數(shù) 常數(shù)值 說明

-------------------------------------------------------------

adOpenForwardOnly 0 缺省值,啟動(dòng)一個(gè)只能向前移動(dòng)的游標(biāo)(Forward Only)。

adOpenKeyset 1 啟動(dòng)一個(gè)Keyset類型的游標(biāo)。

adOpenDynamic 2 啟動(dòng)一個(gè)Dynamic類型的游標(biāo)。

adOpenStatic 3 啟動(dòng)一個(gè)Static類型的游標(biāo)。

-------------------------------------------------------------

以上幾個(gè)游標(biāo)類型將直接影響到Recordset對(duì)象所有的屬性和方法,以下列表說明他們之間的區(qū)別。

Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic


AbsolutePage 不支持 不支持 可讀寫 可讀寫

AbsolutePosition 不支持 不支持 可讀寫 可讀寫

BOF 只讀 只讀 只讀 只讀

CursorType 可讀寫 可讀寫 可讀寫 可讀寫

EOF 只讀 只讀 只讀 只讀

Filter 可讀寫 可讀寫 可讀寫 可讀寫

LockType 可讀寫 可讀寫 可讀寫 可讀寫

PageCount 不支持 不支持 只讀 只讀

PageSize 可讀寫 可讀寫 可讀寫 可讀寫

RecordCount 不支持 不支持 只讀 只讀

AddNew 支持 支持 支持 支持

CancelBatch 支持 支持 支持 支持

CancelUpdate 支持 支持 支持 支持

Close 支持 支持 支持 支持

Delete 支持 支持 支持 支持

Move 不支持 支持 支持 支持

MoveFirst 支持 支持 支持 支持

MoveLast 不支持 支持 支持 支持

MoveNext 支持 支持 支持 支持

MovePrevious 不支持 支持 支持 支持

Open 支持 支持 支持 支持

Update 支持 支持 支持 支持

UpdateBatch 支持 支持 支持 支持

--------------------------------------------------------------

Recordset對(duì)象Open方法的LockType參數(shù)表示要采用的Lock類型,如果忽略這個(gè)參數(shù),那么系統(tǒng)會(huì)以Recordset對(duì)象的LockType屬性為預(yù)設(shè)值。LockType參數(shù)包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:

常數(shù) 常數(shù)值 說明

--------------------------------------------------------------

adLockReadOnly 1 缺省值,Recordset對(duì)象以只讀方式啟動(dòng),無法運(yùn)行AddNew、Update及Delete等方法

adLockPrssimistic 2 當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)會(huì)暫時(shí)鎖住其他用戶的動(dòng)作,以保持?jǐn)?shù)據(jù)一致性。

adLockOptimistic 3 當(dāng)數(shù)據(jù)源正在更新時(shí),系統(tǒng)并不會(huì)鎖住其他用戶的動(dòng)作,其他用戶可以對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。

adLockBatchOptimistic 4 當(dāng)數(shù)據(jù)源正在更新時(shí),其他用戶必須將CursorLocation屬性改為adUdeClientBatch才能對(duì)數(shù)據(jù)進(jìn)行增、刪、改的操作。

需要注意的是:
如果數(shù)據(jù)源沒有返回記錄,那么提供者將 BOF 和 EOF 屬性同時(shí)設(shè)置為 True,并且不定義當(dāng)前記錄位置。如果游標(biāo)類型允許,仍然可以將新數(shù)據(jù)添加到該空 Recordset 對(duì)象。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 夏津县| 鸡东县| 临武县| 安乡县| 吴江市| 乃东县| 安吉县| 乌兰浩特市| 孟村| 乐平市| 丁青县| 运城市| 怀宁县| 巨野县| 河南省| 宁夏| 桂东县| 龙胜| 枝江市| 开原市| 松潘县| 通榆县| 扶风县| 霍邱县| 新平| 临海市| 吉林市| 乐陵市| 石屏县| 阿克苏市| 枣庄市| 胶州市| 绩溪县| 安徽省| 沁阳市| 高邑县| 泰兴市| 安乡县| 分宜县| 林甸县| 巨鹿县|