DB2连接类

表示与数据库的打开的连接。

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

.NET Framework 2.0、3.0、3.5 和 4.0 继承层次结构


System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Data.Common.DbConnection
            IBM.Data.DB2.DB2Connection

.NET Framework 2.0、3.0、3.5 和 4.0 语法


[Visual Basic]
NotInheritable Public Class DB2Connection
   Inherits DbConnection
   Implements ICloneable, IDbConnection
[C#]
public sealed class DB2Connection : Component, ICloneable,
   IDbConnection
[C++]
public __gc __sealed class DB2Connection : public Component,
   ICloneable, IDbConnection
[JScript]
public class DB2Connection extends Component implements
   ICloneable, IDbConnection

备注

DB2Connection 对象表示与连接字符串中指定的数据库的唯一连接。 在客户机/服务器数据库系统的情况下,它等同于与服务器的网络连接。

DB2Connection 对象使用本机资源。 在 DB2Connection 对象超出作用域之前,您应该始终通过调用 CloseDispose 来显式关闭任何打开的 DB2Connection 对象。 不这样做就会由垃圾收集来负责释放这些本机资源,但垃圾收集可能不会立即将它们释放。 这反过来可能最终导致 IBM® Data Server Provider for .NET 或数据服务器耗尽资源或达到最大限制,从而导致零星故障。 例如,当多个连接正在等待垃圾收集器删除时,您可能会迂到与 Maximum Connections相关的错误。 通过调用 CloseDispose 来显式关闭这些连接将允许更有效地使用本机资源,从而增强可伸缩性并提高应用程序的整体性能。

注: 要部署高性能应用程序,通常需要使用连接池。 但是,使用 IBM Data Server Provider for .NET 时,您不需要启用连接池,这是因为缺省情况下,提供程序将合用连接。

如果 DB2®命令 类的其中一个 Execute 方法导致致命 DB2异常 ,那么 DB2Connection 可能会关闭。 但是,用户可以重新打开该连接并继续。

创建 DB2Connection 对象实例的应用程序可能需要所有直接和间接调用者通过设置声明式或强制安全性需求来具有对代码的足够许可权。 DB2Connection 通过使用 DB2Permission 对象来创建安全性需求。 用户可以使用 DB2PermissionAttribute 对象来验证其代码是否具有足够的许可权。 用户和管理员还可以使用代码访问安全策略工具(Caspol.exe)来修改机器、用户和企业级别的安全策略。 有关更多信息,请参阅 Microsoft .NET Framework SDK 文档中的 "保护应用程序"。

示例

[Visual Basic , C#] 以下示例创建 DB2命令DB2ConnectionDB2Connection 将打开并设置为 DB2Command.Connection 属性。 然后,此示例调用 DB2Command.ExecuteNonQuery,并关闭连接。 为此,向 ExecuteNonQuery 传递连接字符串和作为 SQL INSERT 语句的查询字符串。

[Visual Basic]
Public Sub InsertRow(myConnectionString As String)
     ' If the connection string is null, use a default.
     If myConnectionString = "" Then
         myConnectionString = "DATABASE=SAMPLE;"
     End If
     Dim myConn As New DB2Connection(myConnectionString)
     Dim myInsertQuery As String = "INSERT INTO STAFF (ID, NAME) Values(...)"
     Dim myDB2Command As New DB2Command(myInsertQuery)
     myDB2Command.Connection = myConn
     myConn.Open()
     myDB2Command.ExecuteNonQuery()
     myConn.Close()
 End Sub

[C#]
public void InsertRow(string myConnectionString)
 {
    // If the connection string is null, use a default.
    if(myConnectionString == "")
    {
       myConnectionString = "DATABASE=SAMPLE;";
    }
    DB2Connection myConn = new DB2Connection(myConnectionString);
    string myInsertQuery = "INSERT INTO STAFF (ID, NAME) Values(...)";
    DB2Command myDB2Command = new DB2Command(myInsertQuery);
    myDB2Command.Connection = myConn;
    myConn.Open();
    myDB2Command.ExecuteNonQuery();
    myConn.Close();
 }

线程安全

此类型的任何公用静态(在 Visual Basic 中为Shared)成员对于多线程操作都是安全的。 不保证任何实例成员均为线程安全。