您所在的步驟...
? | 連接數(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)完成(即“批”模式)。這些模式將由 CursorLocation 和 LockType 屬性控制。
在“立即”模式中,每次調(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