与数据库的连接池说明、应用

10 篇文章 0 订阅
一、什么是连接池
        连接池是DATA Provider提供的一个 机制,使得应用程序使用的连接保存在连接池里,而避免每次都要完成建立/关闭物理连接的完整过程。
应用程序打开和关闭连接时,一般只需要和连接池“打交道”
二、建立连接池方法

在app.config中连接字符串后添加Pooling=true;Max pool size=10;Min pool size=5

<connectionStrings >
  <add name ="connString" connectionString ="Server=.;DataBase=DB;Uid=sa;Pwd=123456;Pooling=true;Max Pool Size=10;Min Pool Size=5"/>
</connectionStrings>

Pooling=true;表示启用连接池;

Max Pool size=10;表示连接池里最大允许的连接数(可以自己定义)
Min Pool size=5;表示连接池里最小允许的连接数,第一次访问数据库时会马上创建5个连接,以后根据并发的需要自动增加连接数,但最多不超过规定的10个,如果超过10个并发请求的时候,则在连接池之外创建连接对象,在连接池以外创建的连接关闭后,会释放连接资源。

三、SQLServer中查看连接对象

方法:exec sp_who

四、连接池使用的注意问题:

1、在winform程序中,要求连接字符串必须完全一样,这样不同应用程序可以共享数据库中连接池的连接对象,如果应用唾弃的连接字符串不同,则数据库为每个程序创建一个连接池,一定要避免这样做。

2、在Web应用程序中,因为连接字符串在服务器端只有一个,所以不会出现上面的问题。

五、在SQLHelper中连接池的说明

        public static SqlDataReader GetReader(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                /*1、当使用连接池以后,执行open()方法的时候,系统会从连接池中
                提取一个现有的连接对象过来,这时候打开的是一个逻辑连接
                 2、如果连接池中的连接对象都被占用了,则会创建一个新连接对象
                 */
                conn.Open();
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                /*
                 1、当使用Close()方法关闭连接的时候,系统会把连接对象放回
                 连接池,这时候关闭的是一个逻辑连接。
                 2、如果是独立创建的对象,则会被GC翻译掉。
                 */
                conn.Close();
                string errorInfo = "调用GetReader(string sql)方法时发生错误,具体信息:" + ex.Message;
                //将异常信息写入日志 
                WriteLog(errorInfo);
                throw new Exception(errorInfo);
            }
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值