码迷,mamicode.com
首页 > 数据库 > 详细

数据库连接池的一个例子

时间:2014-08-16 17:07:10      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   文件   数据   for   ar   

//--------------------------------------------------------------------------------
// 文件描述:数据库连接池
// 文件作者:品浩
// 创建日期:2013/5/23
// 修改记录: 
//--------------------------------------------------------------------------------
using System;
using System.Configuration;
using System.Data.SqlClient;

namespace DB.SqlServer
{
    internal static class SqlConnectionPool
    {
        /// <summary>
        /// 全局数据库连接字符串
        /// </summary>
        static internal string ConnectionString
        {
            get
            {
                if (ConfigurationManager.ConnectionStrings["ConnectionString"] != null)
                    return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                else
                    throw new Exception("系统配置文件中数据库配置节有误,请检查!");
            }
        }

        /// <summary>
        /// 连接池对象,默认池内个数设置为10
        /// </summary>
        static SqlConnection[] ConnectionPool = new SqlConnection[10];

        /// <summary>
        /// 构造函数初始化数据库连接池
        /// </summary>
        static SqlConnectionPool()
        {
            for (int i = 0; i < ConnectionPool.Length; i++)
            {
                ConnectionPool[i] = new SqlConnection(ConnectionString);
            }
        }

        /// <summary>
        /// 从数据库连接池里获取一个连接实例
        /// </summary>
        /// <returns></returns>
        internal static SqlConnection GetInstance()
        {
            SqlConnection conn = null;

            for (int i = 0; i < ConnectionPool.Length; i++)
            {
                if (ConnectionPool[i] != null)
                {
                    conn = ConnectionPool[i];
                    ConnectionPool[i] = null;
                    break;
                }
            }
            if (conn == null)
            {
                return new SqlConnection(ConnectionString);
            }
            else return conn;
        }

        /// <summary>
        /// 将一个连接返回到池中
        /// </summary>
        /// <param name="conn"></param>
        internal static void PutInstance(SqlConnection conn)
        {
            for (int i = 0; i < ConnectionPool.Length; i++)
            {
                if (ConnectionPool[i] == null)
                {
                    ConnectionPool[i] = conn;
                    break;
                }
            }
            conn = null;
        }
        //end class
    }
}

 

数据库连接池的一个例子,布布扣,bubuko.com

数据库连接池的一个例子

标签:style   blog   color   io   文件   数据   for   ar   

原文地址:http://www.cnblogs.com/pinhao/p/3916567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!