创建 RDO 游标

并非所有的查询都必须以游标的形式返回。事实上,游标是特别昂贵的获取数据方法,很少在产品级的应用程序中使用。如果将 rdoDefaultCursorDriver 属性设置为 rdUseNone,那么应用程序创建的所有结果集的创建方式等价于:使用 OpenResultset 方法,设置了 rdOpenForwardOnly 和 rdConcurReadOnly 选项,并将 RowsetSize 设为 1。这通常是将数据从远程服务器传递到应用程序的最有效的方法。

它也可以创建开销较低的结果集,并且能够通过 Edit/Update 方法进行更新。但是,大多数情况下,这种方法不可行,因为基本表不能直接被更新,所以创建一个可更新的游标是不可能的。无论什么时候用存储过程创建结果集,该结果集都不能被更新,至少不能用 Edit/Update 方法更新。这时候,可以使用 WillUpdateRows 方法执行一个动作查询,真正地完成更新。

无论怎样创建游标,通常都使用以下的各种方法来更新数据,即使该游标时不能被更新的:

总的说来,很多情况下游标都不是访问数据的最优的或可行的方法,对于大型的产品数据库尤其如此。但是,有些情况下,还是可以应用它的:

如果查询仅仅创建了基于一个或多个基本表的无限定游标,它的使用机会就更少了。例如,"SELECT * FROM Table" 就是无限定查询的一个例子。这不仅在被保护的系统中不允许使用,如果试图将应用程序用户扩展为多用户的,那么还会导致严重的并发错误。在创建游标的时候,必须将其范围限制到尽可能少的数据行。在交互式系统中(有操作人员参与),如果企图取得几百行以上的数据,往往会影响效率而且导致相当复杂的并发性错误。