DB2 10.5 for Linux, UNIX, and Windows

DB2ResultSetOptions 枚举

DB2ResultSetOptions 枚举用于指定 DB2ResultSet 类的选项。DB2ResultSetOptions 枚举由位标识组成,位标识可以与按位操作组合。

名称空间:
IBM.Data.DB2
组合件:
IBM.Data.DB2(在 IBM.Data.DB2.dll 中)

语法

[Visual Basic]
<Serializable>
Public Enum DB2ResultSetOptions
[C#]
[Serializable]
public enum DB2ResultSetOptions
[C++]
[Serializable]
__value public enum DB2ResultSetOptions
[JScript]
public
   Serializable
enum DB2ResultSetOptions

成员

成员名 位值 描述
None 0 没有任何选项。对 DB2ResultSet 对象指定了仅正向游标。
Scrollable 1 DB2ResultSet 对象指定了可滚动游标。
Sensitive 2 DB2ResultSet 对象指定了敏感的可滚动游标,它可以识别由应用程序或其他游标所作的更新和插入。
SkipDeleted 8 DB2ResultSet 对象指定了敏感的可滚动游标,它可以跳过它自身或其他游标删除的行。使用 SkipDeleted 选项时,不能假定一行上的某一位置被标记为已删除(例如,当 IsDeleted() 返回 true 时)。
Updatable 4 DB2ResultSet 对象指定了可更新的游标。

数据服务器限制

Informix® 数据库仅支持 ForwardOnly 和 Static 游标类型。如果 SELECT 语句不具有主键、序列或行标识,那么游标为只读。

注释

下表表示了 DB2ResultSetOptions 枚举值的所有有效组合,以及生成的 DB2ResultSet.CursorType
组合 None Scrollable Updatable Sensitive SkipDeleted DB2ResultSet.CursorType
组合 1 X         ForwardOnly
组合 2   X       Static
组合 3   X   X   Keyset
组合 4   X X X   Keyset
组合 5   X   X X Keyset
组合 6   X X X X Keyset

使用 DB2Command.ExecuteResultSet 方法创建 DB2ResultSet 对象时,可以使用 DB2ResultSetOptions 枚举或 DB2CursorType 枚举来定义 DB2ResultSet 实例的功能。上表显示了与 DB2ResultSetOptions 值的每个可接受组合相对应的 DB2ResultSet.CursorType 值。如果应用程序需要一个使用 Dynamic 游标的 DB2ResultSet 对象,那么您必须使用 DB2CursorType.Dynamic 枚举值运行 DB2Command.ExecuteResultSet 方法。

以下信息是有关 DB2ResultSet 类支持的 DB2ResultSet.CursorType 方式的详细信息:
ForwardOnly
ForwardOnly 游标类型是单向的,并且在处理使用所有游标类型时只需极少的金额。使用此游标类型创建的 DB2ResultSet 对象在功能上等效于 DB2DataReader 对象。
Static
Static 游标是只读游标。在创建 Static 游标后,不能添加或除去任何行,并且所有行中的任何值都不会改变。其他访问同一数据的应用程序都不会影响此游标。虽然如此,用于创建此游标的语句的隔离级别可确定如何锁定此游标的行。
Keyset
键集驱动的可滚动游标可检测和更改底层数据。键集游标基于行键。键集驱动的游标首次打开时,会在整个结果集的生存期中将键存储在键集中。此键集用于确定游标中包含的行的顺序和集合。在游标浏览结果集时,它使用此键集中的键来检索数据库中的最新值,这些值不一定是首次打开游标时存在的值。为此,在应用程序滚动到该行前,不会反映更改。以下列表中描述了对底层数据所作的各种更改对键集游标的影响:
  • 更新了现有行中的值:键集游标将反映对现有行所作的更新。因为需要时它将从数据库中访存行,所以键集驱动的游标将始终会检测到它们自身及其他游标所作的更改。
  • 删除了行:键集游标将反映删除的行。如果生成键集游标后删除了行集中的所选行,那么它在游标中将返回为孔(空记录)。
  • 插入了行:键集游标不反映插入的行。首次打开游标后确定行集。为了查看插入的行,应用程序必须重新执行查询。

缺省键集驱动的游标是值并行游标。值并行游标导致乐观锁定,这些锁定在尝试更新或删除前不会挂起。如果已显式地请求锁定并行,那么将使用悲观锁定,并且一旦读取行,就会挂起锁定。(只有 DB2® for Linux, UNIX, and Windows 服务器才支持此锁定级别。)尝试更新或删除时,数据库服务器将对应用程序检索的先前值与底层表中的当前值进行比较。如果值匹配,那么更新或删除成功。如果值不匹配,那么操作失败。失败时,如果应用程序仍可用,那么应用程序可以再次查询值并重新发出更新或删除。

添加至键集游标驱动的 DB2ResultSet 对象的行将插入服务器上的表中,但不会添加至服务器的结果集中。因此,这些行不可更新,对其他事务所作的更改也不敏感。在客户机上对插入的行进行高速缓存后,这些行将成为结果集的一部分。应用程序结果集不会影响在服务器端发生的任何触发器操作,这是因为在任何服务器端启动更改之前,已对结果集进行高速缓存。为了使插入的行可更新、敏感以及看到适用的触发器的结果,应用程序必须再次发出查询以重新生成结果集。

仅当访问支持可滚动游标的数据服务器时,才支持使用键集游标的 DB2ResultSet 对象。

Dynamic
可使用 Dynamic 游标类型通过在 DB2Command.ExecuteResultSet 方法中传递 DB2CursorType.Dynamic 值来创建 DB2ResultSet 类对象。动态可滚动游标可以检测到对结果集所作的所有更改(插入了行、删除了行以及更新了行),并且可以对结果集进行插入、删除和更新。与键集驱动的游标不同的是,动态游标可以检测到其他游标插入的行。动态游标将从结果集中忽略删除的行,因此,不能像键集游标那样将其自身定位在删除行上。

为了在动态可滚动游标的结果集中插入、更新或删除行,结果集必须将至少一个唯一键的所有列包含在基本表中。此唯一键可以是主键或任何其他唯一键。

仅当访问支持动态游标的数据服务器时,才支持使用动态游标的 DB2ResultSet 对象。当前,动态游标仅受 DB2 for z/OS® 服务器支持。