数据库连接池的一个例子

//--------------------------------------------------------------------------------
// 文件描述:数据库连接池
// 文件作者:品浩
// 创建日期: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
    }
}

数据库连接池的一个例子

时间: 2024-10-24 23:55:08

数据库连接池的一个例子的相关文章

【Java EE 学习第16天】【dbcp数据库连接池】【c3p0数据库连接池】

零.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: 1 package day16.utils; 2 3 import java.io.IOException; 4 import java.lang.reflect.InvocationHandler; 5 import java.lang.reflect.Method; 6 import java.lang.reflect.Proxy; 7 import java.sql.Connection; 8 import java.sql.D

为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用

HiKariCP是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池. 原文地址:http://blog.csdn.net/clementad/article/details/46928621 官网:https://github.com/brettwooldridge/HikariCP 为何要使用HiKariCP?这要先从BoneCP说起: 什么?不是有C3P0/DBCP这些成熟的数据库连接池吗?一直用的好好的,为什么又搞出一个BoneCP来?因为,传说中BoneCP在快速这个

javaWeb_JDBC_c3p0数据库连接池

JDBC_c3p0数据库连接池 1.一个基本的c3p0数据库连接池 /** * 一个基本的从池c3p0数据库连接池 */ public static void testC3P0() throws Exception{ ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver cpds.s

[转帖]为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用

为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用 原创Clement-Xu 发布于2015-07-17 15:53:14 阅读数 57066  收藏 展开 HiKariCP是数据库连接池的一个后起之秀,号称性能最好,可以完美地PK掉其他连接池. 原文地址:http://blog.csdn.net/clementad/article/details/46928621 官网:https://github.com/brettwooldridge/HikariCP 为何要使用H

自己实现的一个简单的数据库连接池

自己突然就找到了以前学习的感觉,要不是完了这几个月英爱能找一份比现在好点的工作,说实话还是有点后悔,但是没关系,从现在开始加油还来得及. 今天首先学的是数据库连接,就想到了实现一个数据库连接池,虽然很Lower 但是还是记录下来,一步一个脚印. 首先实现方法是创建一个连接池对象,里面放一个List对象用来保存数据库连接,自己写一个类,实现Connection对象,在里面的close方法里面将连接还给连接池. 然后在从数据库连接池中获取数据的时候用removeFirst方法,移除并返回第一个对象,

数据库连接池(为数据统一连接建立一个缓冲池,现在企业开发使用)

数据库连接池:(里面放了许多连接数据的链接,负责分配,管理,释放数据库连接,可重复使用连接,而不新建  )为数据统一连接建立一个缓冲池,放好了一定数据库连接,使用时在缓冲池里面拿,用完之后再还给缓冲池,再使用时,不需要新建: --------------------------------------------------------------------------------------- 基本方法: /* * DBCP数据源:需要使用架包dbcp.jar *1.加入jar包,依赖于Co

自定义一个数据库连接池

package com.huawei.datasource; import java.sql.Array;import java.sql.Blob;import java.sql.CallableStatement;import java.sql.Clob;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.NClob;import java.sql.PreparedStatement;impor

数据库连接池(为数据统一建立一个缓冲池,现在企业开发使用)

数据库连接池:(里面放了许多连接数据的链接,负责分配,管理,释放数据库连接,可重复使用连接,而不新建  )为数据统一连接建立一个缓冲池,放好了一定数据库连接,使用时在缓冲池里面拿,用完之后再还给缓冲池,再使用时,不需要新建: --------------------------------------------------------------------------------------- 基本方法: /** DBCP数据源:需要使用架包dbcp.jar*1.加入jar包,依赖于Comm

黑马day11 动态代理&amp;模拟一个数据库连接池

数据库连接池:说白了就是在一个池子中(容器)中放了很多的数据库连接,当用户需要的时候就从中取出来一个用,用完了就放回连接池中. 优点:极大的提高了数据库的效率. 对于自定义的数据库连接池我们使用一个LinkedList做数据库连接池.这个集合的特点是增删快,查询慢. 自定义一个数据库连接池的步骤: 1.自定义一个类实现DataSource接口. 2.定义一个List<Connection> list=new LinkedList<Connection>();存放数据库连接. 3.初