ADO.NET笔记——使用连接池
相关知识:
- 连接池的意义:
- 应用程序往往涉及大量的,并发的数据访问操作
- 数据库服务器能够同时维系的连接数量非常有限。如果某个数据库访问操作不及时关闭连接,就会减少其他调用对数据库访问的机会。因此,一般需要尽可能晚的打开连接,尽可能早的关闭连接
- 反复的创建和销毁连接对象,或者反复的打开和关闭实际的连接(从应用程序到数据库服务器,可能跨网络),其开销是比较大的,也是不划算的
- 采用连接池,在池中缓存若干个链接对象。如果有调用需要使用连接,则从池中取出一个;调用完成后,并不销毁连接,而是将连接放回池中,供其它调用使用
- 这样,便大大减少了创建、销毁对象以及重建远程连接的开销
- 配置ADO.NET连接池:
- 在一个应用程序中,一个连接字符串对应一个连接池。不同的连接字符串对应着不同的连接池(即便只是大小写不同,或者某个字符差异)。尽量不要子一个应用程序中创建太多的连接池
- 不同的应用程序,即使连接字符串相同,也对应着不用的连接池
- 连接字符串中指定 MaxPoolSize / MinPoolSize 属性,可以指定池中最大以及最少容纳的连接对象数量
Server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=rootMaxPoolSize=;MinPoolSize=
上述连接字符串将导致连接池中至少保持3个连接对象;如果3个不够用的话,则最多可以创建至10个对象
- 调用连接对象的Close()函数,实际上是将该连接对象放回池中以便重用
- 使用ConnectionStrings配置节:
- 如果在代码中多出直接定义连接字符串,往往会造成细微的字面差异,这将导致多个连接池的创建
- 此外,连接字符串中数据库的名称由可能发生变化,直接卸载代码中,将会导致未来不得不重新编译代码
- .NET提供了应用程序配置文件,其中的<ConnectionStrings>可以用于在代码外定义连接字符串
- 在程序内通过ConfigurationManager类的ConnectiongStrings静态属性,可以获得在配置文件中定义的连接字符串
代码示例:
- App.Config文件:
<connectionStrings>
<add name="db" connectionString="server=Joe-PC;database=AdventureWorks_WroxSSRS2012;uid=sa;pwd=root;"/>
</connectionStrings> - 在代码中访问连接字符串:
string strConn = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
(要先添加System.Configuration.dll的引用,以及System.Configuration命名空间)
ADO.NET笔记——使用连接池的更多相关文章
- java学习笔记—c3p0连接池与元数据分析(42)
第一步:导入c3p0包 第二步:在classpath目录下,创建一个c3p0-config.xml <?xml version="1.0" encoding="UT ...
- java学习笔记—标准连接池的实现(27)
javax.sql.DataSource. Java.sql.* DataSource 接口由驱动程序供应商实现.共有三种类型的实现: 基本实现 - 生成标准的 Connection 对象 – 一个D ...
- ADO.NET连接池机制
为什么需要连接池 剖析一个技术第一个要问的是,这项技术为什么存在. 对于每一个到SQL Server的连接,都需要经历TCP/IP协议的三次握手,身份认证,在SQL Server里建立连接,分配资源等 ...
- ADO.NET 连接池 Session 状态分析
ADO.NET 中提供连接池避免 在业务操作中频繁打开,关闭连接. 当客户端释放连接后,连接池并未真正将数据库连接资源释放 , 而是根据连接字符串特征,将资源放到连接池中, 方便下次重用. 因此问题来 ...
- 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...
- SQL Server 连接池 (ADO.NET) MSDN
连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...
- .NET连接池的配置 【转】
ADO.Net 在数据库操作过程中默认打开了连接池,不需要再进行手工配置.这个特性可以使数据库操作时效率提高,但也要有相应的代码配合,才能真正提高程序效率. 1.连接字符串 ADO.Net 中的连接池 ...
- 非常老的话题 SQLSERVER连接池
原文:非常老的话题 SQLSERVER连接池 非常老的话题 SQLSERVER连接池 写这篇文章不是说要炒冷饭,因为园子里有非常非常多关于SQLSERVER连接池的文章,但是他们说的都是引用MSDN里 ...
- EFCore连接池的坑 差点晚年不保
长话短说 上个月公司上线了一个物联网数据科学项目,我主要负责前端接受物联网事件,并提供 参数下载. webapp 部署在Azure云上,参数使用Azure SQL Server存储. 最近从灰度测试转 ...
随机推荐
- c#高效的线程安全队列ConcurrentQueue<T>(上)
ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数 ...
- Linux修改用户组
usermod -g group loginname 强行设置某个用户所在组 usermod -G groups loginname 把某个用户改为 group(s) usermod -a -G gr ...
- Thrift安装问题
1.error: Bison version 2.5 or higher must be installed on the system! 哈哈,Bison版本低了吧,用下面的命令 wget ht ...
- 常见hash算法的原理
散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Hash table,也叫 ...
- iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent
公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...
- scala的下划线
1.作为“通配符”,类似Java中的*.如import scala.math._ 2.:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就 ...
- Design Mode 之 结构模式
这里我们主要介绍7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我们看下面的图: B1.适配器模式(Adapter) 模式 ...
- (三)u-boot2013.01.01 for TQ210:《mkconfig分析》
/* 和分析makefile一样,分析mkconfig同样注重句法分析 */ ############################################################# ...
- linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH)解决方法
编译 mysql5.6.22 出现以下错误提示: — Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) CMak ...
- pxe+kickstart实现无人值守批量安装linux
pxe+kickstart实现无人值守批量安装linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: ...