此頁(yè)沒有內(nèi)容條目
內(nèi)容

步驟 5:更新數(shù)據(jù)(ADO 教程)

您所在的步驟...

?連接數(shù)據(jù)源。

 

?可選擇創(chuàng)建表示 SQL 查詢命令的對(duì)象。

 

?可選擇在 SQL 命令中將值指定為變量參數(shù)。

 

?執(zhí)行命令。如果命令以行返回,將行存儲(chǔ)在存儲(chǔ)對(duì)象中。

 

?可選擇對(duì)數(shù)據(jù)進(jìn)行定位、檢查、操作和編輯。

 

?適當(dāng)情況下,可以使用存儲(chǔ)對(duì)象中的變更對(duì)數(shù)據(jù)源進(jìn)行更新??蛇x擇在事務(wù)處理中嵌入更新數(shù)據(jù)。

 

?在使用事務(wù)之后,可以接受或拒絕在事務(wù)中所做的更改。結(jié)束事務(wù)。

討論

您剛剛對(duì) Recordset 若干行中的數(shù)據(jù)進(jìn)行了更改。對(duì)于添加、刪除和修改數(shù)據(jù)行,ADO 有兩個(gè)基本概念。

第一個(gè)概念是不立即更改 Recordset 而是將更改寫入內(nèi)部“復(fù)制緩沖區(qū)”。如果您不想進(jìn)行更改,復(fù)制緩沖區(qū)中的更改將被放棄;如果想保留更改,復(fù)制緩沖區(qū)中的改動(dòng)將應(yīng)用到 Recordset。

第二個(gè)概念是只要您聲明行的工作已經(jīng)完成則將更改立刻傳播到數(shù)據(jù)源(即“立即”模式)?;蛘咧皇鞘占瘜?duì)行集合的所有更改,直到您聲明該行集合的工作已經(jīng)完成(即“批”模式)。這些模式將由 CursorLocationLockType 屬性控制。

在“立即”模式中,每次調(diào)用 Update 方法都會(huì)將更改傳播到數(shù)據(jù)源。而在“批”模式中,每次調(diào)用 Update 或移動(dòng)當(dāng)前行位置時(shí),更改都被保存到 Recordset 中,只有 UpdateBatch 方法才可將更改傳送給數(shù)據(jù)源。使用批模式打開 Recordset,因此更新也使用批模式。

注意   Update 可采用簡(jiǎn)捷的形式將更改用于單個(gè)字段或?qū)⒁唤M更改用于一組字段,然后再進(jìn)行更改,這樣可以一步完成更新操作。

可選擇在“事務(wù)”中進(jìn)行更新。實(shí)際上,您可以使用事務(wù)來(lái)確保多個(gè)相互關(guān)聯(lián)的操作或者全部成功執(zhí)行,或者全部取消。在此情況下,事務(wù)不是必需的。

事務(wù)可在一段相當(dāng)長(zhǎng)的時(shí)間內(nèi)分配和保持?jǐn)?shù)據(jù)源上的有限資源,因此建議事務(wù)的存在時(shí)間越短越好。(這便是本教程不在進(jìn)行連接之初就開始事務(wù)的原因。)

為使用教程,將您的批更新括在事務(wù)中:

conn.BeginTrans

rs.UpdateBatch

...

下一步   步驟 6