摸索ADO.NET连接池使用说明

开发 后端
在运行ADO.NET连接池前,将存放所创建的 .mdf 和 .ldf 文件的文件夹必须已经存在,否则将生成异常,大多数应用程序仅使用一个或几个不同的连接配置。

下面详细和准确的介绍有关ADO.NET连接池的使用与维护问题,这些都是学习总结的相关经验,当ADO.NET连接池当出现故障转移等错误时,会自动清除池。下面就进行详细说明。

这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。 为了使打开的连接成本最低,ADO.NET 使用称为连接池的优化方法。

连接池减少新连接需要打开的次数。 池进程保持物理连接的所有权。 通过为每个给定的连接配置保留一组活动连接来管理连接。 ADO.NET连接池只要用户在连接上调用 Open,池进程就会检查池中是否有可用的连接。 如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接。 应用程序对该连接调用 Close 时,池进程会将连接返回到活动连接池集中,而不是真正关闭连接。 连接返回到池中之后,ADO.NET连接池即可在下一个 Open 调用中重复使用。#t#

在初次打开连接时,将根据完全匹配算法创建连接池,该算法将池与连接中的连接字符串关联。 每个连接池都与一个不同的连接字符串相关联。 打开新连接时,如果连接字符串并非与现有池完全匹配,将创建一个新池。 按进程、按应用程序域、按连接字符串以及(在使用集成的安全性时)按 Windows 标识来建立池连接。 连接字符串还必须是完全匹配的;按不同顺序为同一连接提供的关键字将分到单独的池中。

在以下 C# 示例中创建了三个新的ADO.NET连接池对象,但是管理时只需要两个连接池。 注意,根据为 Initial Catalog 分配的值,第一个和第二个连接字符串有所不同。

   1: using (SqlConnection connection = new SqlConnection(
2: "Integrated Security=SSPI;Initial Catalog=Northwind"))
   3:     {
   4:         connection.Open();
   5:         // Pool A is created.
   6:     }
   7: 
   8: using (SqlConnection connection = new SqlConnection(
   9:   "Integrated Security=SSPI;Initial Catalog=pubs"))
  10:     {
  11:         connection.Open();
  12:         // Pool B is created because the connection strings differ.
  13:     }
  14: 
  15: using (SqlConnection connection = new SqlConnection(
  16:   "Integrated Security=SSPI;Initial Catalog=Northwind"))
  17:     {
  18:         connection.Open();
  19:         // The connection string matches pool A.
  20:     }

如果 MinPoolSize 在连接字符串中未指定或指定为零,池中的连接将在一段时间不活动后关闭。 但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸载并且进程结束之前,连接池不会被破坏。 ADO.NET连接池非活动或空池的维护只需要最少的系统开销。

注意:

责任编辑:chenqingxiang 来源: 全球IP通信联盟
相关推荐

2009-12-23 09:14:52

ADO.NET连接池

2009-11-11 14:04:14

ADO.NET连接池

2009-11-03 15:58:22

2009-12-18 14:20:26

ADO.NET组件

2010-01-04 16:18:13

ADO.NET连接池

2009-11-03 16:51:04

ADO.NET连接池观

2009-11-13 13:11:37

ADO.NET连接池

2009-12-23 09:01:15

ADO.NET连接池

2009-12-30 16:22:58

ADO.NET连接池

2009-12-18 15:11:50

ADO.NET类

2009-12-21 14:55:49

ADO.NET对象

2009-12-22 10:43:48

ADO.NET类库

2009-12-18 13:52:39

ADO.NET设计器

2009-12-18 17:16:47

ADO.NET连接数据

2009-12-24 09:49:02

ADO.Net连接池

2009-11-12 09:25:21

ADO.NET连接池

2010-01-05 10:11:23

ADO.NET连接池

2009-12-18 17:06:37

ADO.NET 数据库

2009-12-24 09:14:52

ADO.Net Tea

2009-11-03 16:57:34

ADO.NET FAQ
点赞
收藏

51CTO技术栈公众号