您所在的步骤...
? | 连接数据源。 |
? | 可选择创建表示 SQL 查询命令的对象。 |
? | 可选择在 SQL 命令中将值指定为变量参数。 |
? | 执行命令。如果命令以行返回,将行存储在存储对象中。 |
? | 可选择对数据进行定位、检查、操作和编辑。 |
? | 适当情况下,可以使用存储对象中的变更对数据源进行更新。可选择在事务处理中嵌入更新数据。 |
? | 在使用事务之后,可以接受或拒绝在事务中所做的更改。结束事务。 |
讨论
您刚刚对 Recordset 若干行中的数据进行了更改。对于添加、删除和修改数据行,ADO 有两个基本概念。
第一个概念是不立即更改 Recordset 而是将更改写入内部“复制缓冲区”。如果您不想进行更改,复制缓冲区中的更改将被放弃;如果想保留更改,复制缓冲区中的改动将应用到 Recordset。
第二个概念是只要您声明行的工作已经完成则将更改立刻传播到数据源(即“立即”模式)。或者只是收集对行集合的所有更改,直到您声明该行集合的工作已经完成(即“批”模式)。这些模式将由 CursorLocation 和 LockType 属性控制。
在“立即”模式中,每次调用 Update 方法都会将更改传播到数据源。而在“批”模式中,每次调用 Update 或移动当前行位置时,更改都被保存到 Recordset 中,只有 UpdateBatch 方法才可将更改传送给数据源。使用批模式打开 Recordset,因此更新也使用批模式。
注意 Update 可采用简捷的形式将更改用于单个字段或将一组更改用于一组字段,然后再进行更改,这样可以一步完成更新操作。
可选择在“事务”中进行更新。实际上,您可以使用事务来确保多个相互关联的操作或者全部成功执行,或者全部取消。在此情况下,事务不是必需的。
事务可在一段相当长的时间内分配和保持数据源上的有限资源,因此建议事务的存在时间越短越好。(这便是本教程不在进行连接之初就开始事务的原因。)
为使用教程,将您的批更新括在事务中:
conn.BeginTrans
rs.UpdateBatch
...
下一步 步骤 6