相关知识:

  1. 连接池的意义:

    • 应用程序往往涉及大量的,并发的数据访问操作
    • 数据库服务器能够同时维系的连接数量非常有限。如果某个数据库访问操作不及时关闭连接,就会减少其他调用对数据库访问的机会。因此,一般需要尽可能晚的打开连接,尽可能早的关闭连接
    • 反复的创建和销毁连接对象,或者反复的打开和关闭实际的连接(从应用程序到数据库服务器,可能跨网络),其开销是比较大的,也是不划算的
    • 采用连接池,在池中缓存若干个链接对象。如果有调用需要使用连接,则从池中取出一个;调用完成后,并不销毁连接,而是将连接放回池中,供其它调用使用
    • 这样,便大大减少了创建、销毁对象以及重建远程连接的开销
  2. 配置ADO.NET连接池:
    • 在一个应用程序中,一个连接字符串对应一个连接池。不同的连接字符串对应着不同的连接池(即便只是大小写不同,或者某个字符差异)。尽量不要子一个应用程序中创建太多的连接池
    • 不同的应用程序,即使连接字符串相同,也对应着不用的连接池
    • 连接字符串中指定 MaxPoolSize / MinPoolSize 属性,可以指定池中最大以及最少容纳的连接对象数量
          Server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=rootMaxPoolSize=;MinPoolSize=

      上述连接字符串将导致连接池中至少保持3个连接对象;如果3个不够用的话,则最多可以创建至10个对象

    • 调用连接对象的Close()函数,实际上是将该连接对象放回池中以便重用
  3. 使用ConnectionStrings配置节:
    • 如果在代码中多出直接定义连接字符串,往往会造成细微的字面差异,这将导致多个连接池的创建
    • 此外,连接字符串中数据库的名称由可能发生变化,直接卸载代码中,将会导致未来不得不重新编译代码
    • .NET提供了应用程序配置文件,其中的<ConnectionStrings>可以用于在代码外定义连接字符串
    • 在程序内通过ConfigurationManager类的ConnectiongStrings静态属性,可以获得在配置文件中定义的连接字符串

代码示例:

  1. App.Config文件:

    <connectionStrings>
    <add name="db" connectionString="server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=root;"/>
    </connectionStrings>
  2. 在代码中访问连接字符串:
        string strConn = ConfigurationManager.ConnectionStrings["db"].ConnectionString;

    (要先添加System.Configuration.dll的引用,以及System.Configuration命名空间)

ADO.NET笔记——使用连接池的更多相关文章

  1. java学习笔记—c3p0连接池与元数据分析(42)

    第一步:导入c3p0包 第二步:在classpath目录下,创建一个c3p0-config.xml <?xml version="1.0" encoding="UT ...

  2. java学习笔记—标准连接池的实现(27)

    javax.sql.DataSource. Java.sql.* DataSource 接口由驱动程序供应商实现.共有三种类型的实现: 基本实现 - 生成标准的 Connection 对象 – 一个D ...

  3. ADO.NET连接池机制

    为什么需要连接池 剖析一个技术第一个要问的是,这项技术为什么存在. 对于每一个到SQL Server的连接,都需要经历TCP/IP协议的三次握手,身份认证,在SQL Server里建立连接,分配资源等 ...

  4. ADO.NET 连接池 Session 状态分析

    ADO.NET 中提供连接池避免 在业务操作中频繁打开,关闭连接. 当客户端释放连接后,连接池并未真正将数据库连接资源释放 , 而是根据连接字符串特征,将资源放到连接池中, 方便下次重用. 因此问题来 ...

  5. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  6. SQL Server 连接池 (ADO.NET) MSDN

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

  7. .NET连接池的配置 【转】

    ADO.Net 在数据库操作过程中默认打开了连接池,不需要再进行手工配置.这个特性可以使数据库操作时效率提高,但也要有相应的代码配合,才能真正提高程序效率. 1.连接字符串 ADO.Net 中的连接池 ...

  8. 非常老的话题 SQLSERVER连接池

    原文:非常老的话题 SQLSERVER连接池 非常老的话题 SQLSERVER连接池 写这篇文章不是说要炒冷饭,因为园子里有非常非常多关于SQLSERVER连接池的文章,但是他们说的都是引用MSDN里 ...

  9. EFCore连接池的坑 差点晚年不保

    长话短说 上个月公司上线了一个物联网数据科学项目,我主要负责前端接受物联网事件,并提供 参数下载. webapp 部署在Azure云上,参数使用Azure SQL Server存储. 最近从灰度测试转 ...

随机推荐

  1. 判断null

    var tmp = this.pullDown.getValue();   if(!tmp && typeof(tmp)!="undefined" &&am ...

  2. Data Structure 之 KMC字符串匹配算法

    有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊 ...

  3. structs 2 学习总结(一)

      转发请注明出处 1.页面传值. 传值 前台 <s:form action="login1">//action 名字 需要在structs配置 用户<s:tex ...

  4. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  5. 使用 mina 传输大字节数组

    转载自:http://seara520.blog.163.com/blog/static/16812769820103214817781/ 使用mina传输超过2k以上的数据时(采用tcp方式,如果是 ...

  6. codeforces 680A A. Bear and Five Cards(水题)

    题目链接: A. Bear and Five Cards //#include <bits/stdc++.h> #include <vector> #include <i ...

  7. ZWave for Arduino

    https://sites.google.com/site/arduinozwave/http://www.ebay.com/sch/i.html?_trksid=p2050601.m570.l131 ...

  8. 转:自建CDN防御DDoS(1, 2, 3)infoq

    本文中提到的要点: 1.  针对恶意流的应对方法与策略.(基本上,中级的,顶级的) 2.  IP分类的脚本 3.  前端proxy工具的选择与使用. 4.  开源日志系统的选择与比较. (http:/ ...

  9. 如何使用OpenShare部署和运营企业门户

    如何使用OpenShare部署和运营企业门户 这篇Blog是偏向企业内整体门户部署和运营的指南,是偏向整体管理和规划的,并不是针对终端用户的OpenShare软件操作手册,具体的操作可以上优酷看相关视 ...

  10. 浅谈 css3 box盒子模型以及box-flex的使用

    display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分.   一.使 ...