执行开放式的批更新
RDO 2.0 用一种新的技术来成批提交多个数据库操作。ODBC 和 SQL Server 服务器端的游标库都支持对支持此概念的数据源的多语句批处理。但是,该操作不由游标驱动程序管理,因此必须人工处理错误和各种偶然的情况。与之相反,客户批处理游标库是自动的:
- 跟踪它所创建的 rdoResultset 对象中每一行的状态。当某一行被修改、删除,或添加了新的一行,Status 属性会自动设置,以反映该数据行是修改过的。通过检查数据行的状态,客户批处理游标库可以跟踪那些被添加、修改、删除,或没有改动过的数据行。
- 管理独立的 rdoResultset 对象。尽管 rdoResultset 不能用保存的本地数据独立地创建,在创建了静态结果集之后,可以将其从远程服务器上断开,然后对 rdoResultset 对象进行任意的修改。通过再次设置 ActiveConnection 属性,可以将 rdoResultset 重新联到另一个连接上,并使用 BatchUpdate 方法传递所作的修改。
- 允许推迟更新操作。因为 客户批处理游标库被设计为对数据行的集合进行批处理操作,所以只要需要,可以推迟将所作的修改传递到数据库。
- 建立执行数据库更新所需的 SQL 语句。客户批处理游标库会在每一个 SQL 语句之后添加一个适当的 WHERE 子句,通过关键字准确地标识指定行。
- 管理每次操作的结果,并向应用程序报告操作是否成功。
一般地,在采用延迟更新策略时,通常假定在脱机或延迟操作时不会有重大的修改。如果是另一种情况,数据经常被查询并修改,那么这种策略很快就会崩溃。客户批处理游标库可以捕获预料不到的更新冲突,例如,另一个用户修改的记录是正在被更新的结果集中的一列。在发生这种情况时,与冲突相关的每一行都会作上标记,而且,这些应用程序可以使用数据的三个副本:
- 应用程序第一次从数据库中读入的数据。
- 数据库中记录的数据(其它用户已经修改过)。
- 用户试图保存的数据。
如何使用这三个版本的数据,是应用程序需要解决的问题。