C#中SQL Server数据库链接池使用及链接字符串部分关键字使用说明

(1) 数据库的链接使用后,必须采用close()链接等效的方法关闭链接。只有关闭后,链接才能进入链接池。

       参见微软的使用链接池说明:https://msdn.microsoft.com/zh-cn/library/8xx3tyca(v=vs.80).aspxsql

       “警告:数据库

        咱们建议您在使用完链接时必定要关闭链接,以便链接能够返回池。要关闭链接,能够使用 Connection 对象的 Close 或 Dispose 方法,也能够经过在 C# 的 using 语句中或在 Visual Basic 的 Using 语句中打开全部链接。不是显式关闭的链接可能不会添加或返回到池中。例如,若是链接已超出范围但没有显式关闭,则仅当达到最大池大小而该链接仍然有效时,该链接才会返回到链接池中。有关更多信息,请参见 Visual Basic 的using 语句(C# 参考)如何:释放系统资源。”spa

  A.方法1(C#):线程

       using (SqlConnection connection = new SqlConnection()) {对象

       connection.ConnectionString = connectionString;进程

        connection.Open();事务

       //读写操做............................资源

     //此处不用显示关闭链接,由于using语法会关闭链接get

       }
   B.方法2(C#):
      SqlConnection connection = new SqlConnection();
      connection.ConnectionString = connectionString;
       connection.Open();
     ............................
       connection.Close();
   C.方法3(C#利用读数据时):

     SqlConnection connection = new SqlConnection(ConnectionString);cmd

     string _sql = "Select * from [Data] where ......;

    SqlCommand _cmd = new SqlCommand(_sql, connection);
     connection.Open();
    SqlDataReader _reader = _cmd.ExecuteReader(CommandBehavior.CloseConnection);//此处读取完成后关闭读取时关闭对应链接

      ............................
       _reader.Close();//此处必须显示关闭读取,这样才能配合CommandBehavior.CloseConnection关闭对应的链接
(2)与数据库尝试链接的时间与数据库链接通讯超时时间Connection Timeout,默认15S。
(3)控制链接是否进入链接池
        SqlConnection.ConnectionString 属性详细见https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.80).aspx 
是否使能池程序在建立线程的当前事务上下文中自动登记链接 Enlist,是否从链接池取链接或建立新链接后存入合适的链接池Pooling,链接池最大最小值Max Pool Size,Min Pool Size
           例如:  ConnectionString = "Data Source=(local);Initial Catalog=AdventureWorks;" + "Integrated Security=SSPI;";
          关闭链接池  "Enlist=false;"    "Pooling=false;",即为:
          ConnectionString=ConnectionString+"Enlist=false;"+"Pooling=false;"
(3) 链接进入链接池后,如下关键字在数据库链接时才起做用
      SqlConnection.ConnectionString 属性Connection Lifetime, 设置链接池中的链接在链接池中的存储并销毁时间
(4)若是不想让链接进入链接池(便可能存在链接池打开的状况,不经过"Pooling=false;"设置),可采用在程序中对使用的链接采用以下方法让链接使用完成后不会进入链接池
       SqlConnection.ClearPool(connection);
      此方法能够解决数据库链接中 sleeping进程过多的问题。
      参见:https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.clearpool(v=vs.80).aspx
相关文章
相关标签/搜索