(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
 

C#中SQL Server数据库连接池使用及连接字符串部分关键字使用说明的更多相关文章

  1. ADO.NET中SQL Server数据库连接池

    连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...

  2. .NET中SQL Server数据库连接方法

    1. 使用本机上的SQL Server Express 实例上的用户实例.       用户实例的连接创建了一个新的SQL Server 实例.此连接只能是在本地SQL Server 2005实例上并 ...

  3. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号

      1.先修改 sql server 2008R2的端口号吧,1433经常成为别人入侵的端口,在sql server 配置管理器 -->sql server 网络配置-->MSSQLSER ...

  4. MS SQL Server 数据库连接字符串详解

    MS SQL Server 数据库连接字符串详解 原地址:http://blog.csdn.net/jhhja/article/details/6096565 问题 : 超时时间已到.在从池中获取连接 ...

  5. SQL server 数据库连接方式分析

    SQL server 数据库连接方式图示: ODBC和OLEDB连接的区别 ODBC(开放数据库互连):是Microsoft引进的一种早期数据库接口技术.它实际上是ADO的前身.早期的数据库连接是非常 ...

  6. SQL Server数据库连接,Web.config的正确配置 [转]

    http://database.51cto.com/art/201007/213289.htm 此文章主要介绍的是Web.config正确配置SQL Server数据库连接的实际擦步骤,在图5-6中, ...

  7. win7中 SQL server 2005无法连接到服务器,错误码:18456

    win7中 SQL server 2005无法连接到服务器,错误码:18456.. 数据库刚装完.我用Windows登陆  结果登陆不上去.. 选中SQL Server Management Stud ...

  8. sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233) 然后再连接:错误:18456

    问题:sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误.(provider:命名管道提供程序,error:0-管道的另一端上无任何进程.)(Microsoft S ...

  9. 如何获取SQL Server数据库连接字符串的某些部分

    有的时候需要获取SQL Server数据库连接字符串的某些部分.用正则表达式可能有点麻烦. 其实有一个比较简单的方法--使用SqlConnectionStringBuilder. var builde ...

随机推荐

  1. 用Docker Compose启动Nginx和Web等多个镜像

    安装docker-compose 运行命令 curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker ...

  2. python爬虫——黑板客老师课程学习

    程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...

  3. DIOCP单元文件应用场景

    diocp.coder.tcpServer是用来做文件传输的 diocp.tcp.server这个是用来做通讯的

  4. Android Studio使用百度地图示例BaiduMapsApiASDemo

    Android Studio使用百度地图示例BaiduMapsApiASDemo 用自己AVD下的debug.keystore替换掉项目中的debug.keystore 生成自己的签名 同样的方法生成 ...

  5. XdbxAnalysis

    Tree: TXdbxAnalysis; FDataStream: TMemoryStream; {FDataStream:= TMemoryStream.Create;    FDataStream ...

  6. transitionend的运用案例

    transitionend事件代表着过渡动画结束后 原生的绑定方法 obj.addEventListener('transitionEnd', function(){ //do soming }) 我 ...

  7. LAMP之准备,samba搭建

    搭建lamp其实并没有多复杂,只是,最多的时间是花在下载等待和计算机编译等上面耗时,要是时间多花在这些事情上面总感觉有点亏.经过我多次实践,发现在linux下使用下载会有诸多问题,甚至不如window ...

  8. myeclipse部署web项目到server : deploy location 为 INVALID,并且不能更改

    首先查看项目路径下有没有 .mymetadata文件,没有就从其它地方挪一个,但是文件中的id必须是唯一的. 如果还不行就去下面这位大哥写的博客看下,进行下一步就可以解决了 生如夏花

  9. golang gbk转utf8 mssql access

    package ms2mysql import ( "bytes" "golang.org/x/text/encoding/simplifiedchinese" ...

  10. iOS相册中图片按照时间排序

    ios相册默认是按照时间从过去到现在排列,图片顺序有正序和逆序,group可以用以下方法来选择顺序 /** @param NSIndexSet 需要获取的相册中图片范围 @param NSEnumer ...