DB2Connection.BeginChain 方法
标记要发送至数据库服务器的一系列 INSERT、UPDATE 和 DELETE 语句的开始。
-
名称空间:
- IBM.Data. DB2 组合件:
- IBM.Data. DB2(在 IBM.Data. DB2.dll 中)
语法
[Visual Basic] Public Sub BeginChain() [C#] public void BeginChain(); [C++] public: void BeginChain(); [JScript] public function BeginChain();
异常
异常类型 | 条件 |
---|---|
InvalidOperationException | 连接未打开。 |
注释
如果需要执行一大批 INSERT、UPDATE 和 DELETE 语句,那么可以将这些 SQL 语句链接起来,这样就降低了数据库服务器的网络流量,从而提高应用程序的性能。
在调用 BeginChain 方法来激活链接之前,必须打开 DB2Connection 对象。在调用 BeginChain 方法之后,对 DB2Connection 执行的 INSERT、UPDATE 和 DELETE 语句将在客户机上排队,直到调用了 EndChain 方法为止。在调用 EndChain 方法之后,会将这些语句发送至数据库服务器并执行这些语句。
无论链接是否处于活动状态,都可以使用 DB2CommandClass.ExecuteNonQuery 方法来执行 INSERT、UPDATE 和 DELETE 语句。但是,当链接处于活动状态时,对 DB2Command.ExecuteNonQuery 的所有调用都将返回 -1。这是因为在调用 EndChain 方法之后将同时执行链接在一起的所有语句,所以受特定语句影响的行数是未知的。可以从多个 DB2Command 对象执行链接的语句,也可以从单个 DB2Command 对象执行这些语句。必须从激活了链接的同一 DB2Connection 来创建用于执行链接的一系列语句的所有 DB2Command 对象。
为了与支持链接的数据库服务器进行连接,在调用 BeginChain 方法时将 Chaining 属性设置为 true,而在调用 EndChain方法时又将该属性重新设置为 false。有些数据服务器不支持链接。如果服务器不支持链接,那么 IBM Data Server Provider for .NET 将忽略 BeginChain 和 EndChain 请求,并让 DB2Connection.Chaining 属性的值继续保持为 false,并将所有语句都单独提交给数据库服务器。可以通过检查 Chaining 属性来确定链接是否处于活动状态。
对于可以为单个 DB2Connection 对象链接的语句数没有任何限制。但是,在对 2,147,483,646 个语句进行排队之后,IBM Data Server Provider for .NET 就会在内部关闭链接,提交这些语句,然后重新启动链接。另外,一旦应用程序与数据库服务器之间的通信缓冲区(通常为 32KB)已满,就会将该缓冲区中的内容发送至服务器并保存在服务器中,直到调用 EndChain 为止。可以使用 rqrioblk 配置参数来调整此通信缓冲区的大小。
为了获得最佳性能,可在 INSERT、UPDATE 和 DELETE 语句中使用参数标记。
摘自: