ADO.NET笔记——使用连接池

相关知识:

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

      上述连接字符串将导致连接池中至少保持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命名空间)

原文地址:https://www.cnblogs.com/chenguangqiao/p/4373540.html