<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ??????? 本文是用.net實(shí)現(xiàn)的數(shù)據(jù)庫鏈接池,大體體現(xiàn)了數(shù)據(jù)庫鏈接池的實(shí)現(xiàn)思想,ADO.NET已經(jīng)提供了很好的鏈接池維護(hù),所以本程序基本沒有什么實(shí)用價(jià)值:

    1.鏈接池管理類
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.Collections;
    using System.Configuration;

    /// <summary>
    /// DbConnectionPool 的摘要說明
    /// </summary>

    namespace dbopr
    {
    ??? public class DbConnectionPool
    ??? {
    ??????? //定義存放數(shù)據(jù)庫鏈接的隊(duì)列
    ??????? private static Queue connections=new Queue();

    ??????? //數(shù)據(jù)庫參數(shù)
    ??????? private static string ConnString = "";??????????????????????????????????? //鏈接字符串

    ??????? //鏈接池參數(shù)
    ??????? private static int InitSize = 20;???????????????????????????????????????? //初始化鏈接池大小
    ??????? private static int MaxSize = 100;???????????????????????????????????????? //最大鏈接數(shù)
    ??????? private static int QueueSize = 50;??????????????????????????????????????? //隊(duì)列中最大維護(hù)的鏈接數(shù)
    ??????? private static int ConnNum = 0;?????????????????????????????????????????? //系統(tǒng)維護(hù)的鏈接總數(shù)


    ??????? //定義數(shù)據(jù)庫類型,1表示為SqlServer數(shù)據(jù)庫,2表示其它的OLE DB;默認(rèn)為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());
    ??????????? }
    ??????? }

    ??????? //獲取一個(gè)Sql Server鏈接對(duì)象
    ??????? private static SqlConnection newSqlConn()
    ??????? {
    ??????????? ConnNum++;
    ??????????? return new SqlConnection(ConnString);
    ??????? }
    ???????
    ??????? //獲取一個(gè)OLE DB鏈接對(duì)像
    ??????? private static OleDbConnection newOleConn()
    ??????? {
    ??????????? ConnNum++;
    ??????????? return new OleDbConnection(ConnString);
    ??????? }

    ??????? //獲取一個(gè)數(shù)據(jù)庫鏈接
    ??????? public static IDbConnection getConn() {
    ??????????? if (connections.Count == 0)????????????????????????????????? //如果隊(duì)列中鏈接用完,則新建一個(gè)鏈接放入隊(duì)列
    ??????????? {
    ??????????????? if (ConnNum > MaxSize)?????????????????????????????????? //如果當(dāng)前活動(dòng)鏈接達(dá)到最大,則等待鏈接
    ??????????????????? return null;
    ??????????????? else
    ??????????????? {
    ??????????????????? if (DbType == 1)
    ??????????????????????? connections.Enqueue(newSqlConn());
    ??????????????????? else
    ??????????????????????? connections.Enqueue(newOleConn());
    ??????????????????? return connections.Dequeue();
    ??????????????? }
    ??????????? }
    ??????????? else
    ??????????????? return connections.Dequeue();
    ??????? }

    ??????? //釋放一個(gè)活運(yùn)鏈接
    ??????? public static void reConn(IDbConnection conn) {
    ??????????? if (connections.Count > QueueSize)?????????????????????????? //如果隊(duì)列中元素個(gè)數(shù)已達(dá)到最大,則關(guān)閉鏈接
    ??????????????? conn.Close();
    ??????????? else
    ??????????????? connections.Enqueue(conn);
    ??????? }

    ??????? //銷毀鏈接池
    ??????? public static void ClearPool() {
    ??????????? while(connections.Count>0)
    ???????????????? (IDbConnection)connections.Dequeue().Close();
    ??????? }
    ??? }
    }

    2.鏈接生成類
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.Configuration;
    using System.Web;

    /// <summary>
    /// DbConn 的摘要說明
    /// </summary>

    namespace dbopr
    {
    ??? public class DbConnection
    ??? {
    ??????? private static IDbConnection conn;
    ???????
    ??????? public DbConnection()
    ??????? {
    ??????????? //
    ??????????? // TODO: 在此處添加構(gòu)造函數(shù)邏輯
    ??????????? //
    ??????? }

    ??????? public static SqlConnection getSqlConn()
    ??????? {
    ??????????? //獲取鏈接池中的Sql Server的鏈接
    ??????????? conn = DbConnectionPool.getConn();
    ??????????? return (SqlConnection)conn;
    ??????? }

    ??????? public static OleDbConnection getOleConn() {
    ??????????? //獲取其它OLE DB的鏈接
    ??????????? conn = DbConnectionPool.getConn();
    ??????????? return (OleDbConnection)conn;
    ??????? }

    ??????? public static void Close() {
    ??????????? //放回用過的鏈接
    ??????????? DbConnectionPool.reConn(conn);
    ??????? }
    ??? }
    }

    posted on 2006-12-01 17:11 WindDC 閱讀(523) 評(píng)論(0)  編輯  收藏 所屬分類: .net

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 亚洲欧美成人综合久久久| 国产亚洲成归v人片在线观看| 亚洲AV日韩精品久久久久久久 | 午夜性色一区二区三区免费不卡视频 | 久久国产精品国产自线拍免费| 亚洲人成网77777亚洲色| 久久国产精品免费一区二区三区| 亚洲中文无韩国r级电影| 无遮挡国产高潮视频免费观看| 337p日本欧洲亚洲大胆裸体艺术 | 国产偷国产偷亚洲高清人| 免费国产成人高清视频网站| 四虎国产精品成人免费久久| 国产亚洲精品久久久久秋霞 | 日韩亚洲国产高清免费视频| 岛国av无码免费无禁网站| 在线播放亚洲精品| 亚洲高清无码在线观看| 国产精品免费看久久久无码| 亚洲色图.com| 99热在线精品免费全部my| 亚洲AV成人无码网天堂| 亚洲无码精品浪潮| 日本在线免费播放| 亚洲一区中文字幕在线观看| 四虎影视永久免费观看网址| 91视频免费观看高清观看完整| 97久久精品亚洲中文字幕无码| 成人免费无码大片a毛片| 最好2018中文免费视频| 24小时免费直播在线观看| 亚洲国产精品自在自线观看| 亚洲婷婷五月综合狠狠爱| 6080午夜一级毛片免费看| 亚洲日本天堂在线| 亚洲人JIZZ日本人| 毛片高清视频在线看免费观看| 黄视频在线观看免费| 亚洲娇小性xxxx色| 亚洲一级片免费看| 日韩视频在线精品视频免费观看|