锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.閾炬帴姹犵鐞嗙被
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Collections;
using System.Configuration;
/// <summary>
/// DbConnectionPool 鐨勬憳瑕佽鏄?br />/// </summary>
namespace dbopr
{
聽聽聽 public class DbConnectionPool
聽聽聽 {
聽聽聽聽聽聽聽 //瀹氫箟瀛樻斁鏁版嵁搴撻摼鎺ョ殑闃熷垪
聽聽聽聽聽聽聽 private static Queue connections=new Queue();
聽聽聽聽聽聽聽 //鏁版嵁搴撳弬鏁?br />聽聽聽聽聽聽聽 private static string ConnString = "";聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //閾炬帴瀛楃涓?/p>
聽聽聽聽聽聽聽 //閾炬帴姹犲弬鏁?br />聽聽聽聽聽聽聽 private static int InitSize = 20;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //鍒濆鍖栭摼鎺ユ睜澶у皬
聽聽聽聽聽聽聽 private static int MaxSize = 100;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //鏈澶ч摼鎺ユ暟
聽聽聽聽聽聽聽 private static int QueueSize = 50;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //闃熷垪涓渶澶х淮鎶ょ殑閾炬帴鏁?br />聽聽聽聽聽聽聽 private static int ConnNum = 0;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //緋葷粺緇存姢鐨勯摼鎺ユ繪暟
聽聽聽聽聽聽聽 //瀹氫箟鏁版嵁搴撶被鍨嬶紝1琛ㄧず涓篠qlServer鏁版嵁搴擄紝2琛ㄧず鍏跺畠鐨凮LE DB錛涢粯璁や負(fù)SqlServer
聽聽聽聽聽聽聽 private static int聽 DbType = 1;
聽聽聽聽聽聽聽 public static int DbType
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 set
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DbType = value;
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 private DbConnectionPool()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 try{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ConnString = Configuration.connectionStrings["DbSource"].connectionString;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 InitSize = int.Parse(Configuration.connectionStrings["InitSize"].connectionString);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 MaxSize = int.Parse(Configuration.connectionStrings["MaxSize"].connectionString);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 QueueSize = int.Parse(Configuration.connectionStrings["QueueSize"].connectionString);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DbType = int.Parse(Configuration.connectionStrings["DbType"].connectionString);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 initPool();
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 catch(Exception e) {
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 //鍒濆鍖栭摼鎺ユ睜
聽聽聽聽聽聽聽 private static void initPool(){
聽聽聽聽聽聽聽聽聽聽聽 int i;
聽聽聽聽聽聽聽聽聽聽聽 for (i = 1; i <= InitSize; i++) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (DbType == 1)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connections.Enqueue(newSqlConn());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connections.Enqueue(newOleConn());
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 //鑾峰彇涓涓猄ql Server閾炬帴瀵硅薄
聽聽聽聽聽聽聽 private static SqlConnection newSqlConn()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 ConnNum++;
聽聽聽聽聽聽聽聽聽聽聽 return new SqlConnection(ConnString);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 //鑾峰彇涓涓狾LE DB閾炬帴瀵瑰儚
聽聽聽聽聽聽聽 private static OleDbConnection newOleConn()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 ConnNum++;
聽聽聽聽聽聽聽聽聽聽聽 return new OleDbConnection(ConnString);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 //鑾峰彇涓涓暟鎹簱閾炬帴
聽聽聽聽聽聽聽 public static IDbConnection getConn() {
聽聽聽聽聽聽聽聽聽聽聽 if (connections.Count == 0)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //濡傛灉闃熷垪涓摼鎺ョ敤瀹岋紝鍒欐柊寤轟竴涓摼鎺ユ斁鍏ラ槦鍒?br />聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (ConnNum > MaxSize)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //濡傛灉褰撳墠媧誨姩閾炬帴杈懼埌鏈澶э紝鍒欑瓑寰呴摼鎺?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return null;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (DbType == 1)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connections.Enqueue(newSqlConn());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connections.Enqueue(newOleConn());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return connections.Dequeue();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return connections.Dequeue();
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 //閲婃斁涓涓椿榪愰摼鎺?br />聽聽聽聽聽聽聽 public static void reConn(IDbConnection conn) {
聽聽聽聽聽聽聽聽聽聽聽 if (connections.Count > QueueSize)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //濡傛灉闃熷垪涓厓绱犱釜鏁板凡杈懼埌鏈澶э紝鍒欏叧闂摼鎺?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 conn.Close();
聽聽聽聽聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 connections.Enqueue(conn);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 //閿姣侀摼鎺ユ睜
聽聽聽聽聽聽聽 public static void ClearPool() {
聽聽聽聽聽聽聽聽聽聽聽 while(connections.Count>0)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (IDbConnection)connections.Dequeue().Close();
聽聽聽聽聽聽聽 }
聽聽聽 }
}
2.閾炬帴鐢熸垚綾?br />using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
/// <summary>
/// DbConn 鐨勬憳瑕佽鏄?br />/// </summary>
namespace dbopr
{
聽聽聽 public class DbConnection
聽聽聽 {
聽聽聽聽聽聽聽 private static IDbConnection conn;
聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 public DbConnection()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 //
聽聽聽聽聽聽聽聽聽聽聽 // TODO: 鍦ㄦ澶勬坊鍔犳瀯閫犲嚱鏁伴昏緫
聽聽聽聽聽聽聽聽聽聽聽 //
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 public static SqlConnection getSqlConn()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 //鑾峰彇閾炬帴姹犱腑鐨凷ql Server鐨勯摼鎺?br />聽聽聽聽聽聽聽聽聽聽聽 conn = DbConnectionPool.getConn();
聽聽聽聽聽聽聽聽聽聽聽 return (SqlConnection)conn;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 public static OleDbConnection getOleConn() {
聽聽聽聽聽聽聽聽聽聽聽 //鑾峰彇鍏跺畠OLE DB鐨勯摼鎺?br />聽聽聽聽聽聽聽聽聽聽聽 conn = DbConnectionPool.getConn();
聽聽聽聽聽聽聽聽聽聽聽 return (OleDbConnection)conn;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 public static void Close() {
聽聽聽聽聽聽聽聽聽聽聽 //鏀懼洖鐢ㄨ繃鐨勯摼鎺?br />聽聽聽聽聽聽聽聽聽聽聽 DbConnectionPool.reConn(conn);
聽聽聽聽聽聽聽 }
聽聽聽 }
}