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

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

“警告:

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

A.方法1(C#):

using (SqlConnection connection = new SqlConnection()) {

connection.ConnectionString = connectionString;

connection.Open();

//读写操作............................

//此处不用显示关闭连接,因为using语法会关闭连接

}
   B.方法2(C#):
      SqlConnection connection = new SqlConnection();

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

SqlConnection connection = new SqlConnection(ConnectionString);

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
 

最新文章

  1. js时间Date对象介绍及解决getTime转换为8点的问题
  2. thinkphp3.2与phpexcel带图片生成 完美案例
  3. C语言 多线程测试
  4. MVC 区域功能
  5. [IIS]IIS扫盲(四)
  6. Palindrome Partitioning
  7. UGUI Text控件
  8. Uva10290 - {Sum+=i++} to Reach N
  9. form 表单 设置编码和页面编码
  10. iOS 播放音频的几种方法
  11. C++ 之 简单的五子棋AI程序
  12. ng-app&data-ng-app
  13. Python中的string模块的学习
  14. linux grep find查找文件夹、代码中的某行/字符串
  15. Centos7通过yum安装最新MySQL
  16. 2015-06学习总结——c++
  17. Python Web学习笔记之CPU时间片
  18. python中如何使输出不换行
  19. nmcli命令使用
  20. 从零开始的Python学习Episode 10——函数

热门文章

  1. IDEA工具使用说明
  2. input输入框怎么禁止粘贴
  3. Android_layout 布局(二)
  4. fedora23 tweak tool不工作解决方案
  5. ISE应用入门的一些问题
  6. CSS布局设计
  7. 【转】MySQL连接超时断开的问题
  8. Light OJ 1032 - Fast Bit Calculations(数学)
  9. RandomAccessFile拆分合并文件
  10. WebService未能加载文件或程序集“ESRI.ArcGIS.XXX”或它的某一个依赖项