Access資料庫連線池

2022-08-03 09:54:11 字數 2861 閱讀 7411

access

資料庫沒有資料庫連線池,每次開啟和關閉資料庫時都非常耗時,自己編寫了乙個簡易的資料庫連線池,新增資料庫型別還可支援其他沒有資料庫連線池的資料庫型別。

該資料庫連線池要求必須更改

web.config

中的資料庫連線字串,新增

max pool size

及connect timeout

兩個屬性

,如:」

provider=microsoft.ace.oledb.12.0;data source=d:"db.accdb;max pool size=200;connect timeout=300"/>;

,以獲取需要最大的連線數量及連線物件生存期。

該資料庫連線池是在關閉資料庫連線,檢驗其他連線物件的生存期,這樣在沒有發出關閉資料庫連線的請求時,一些已經超過生存期連線物件仍然在記憶體中,還無法做到與其他資料庫連線池同樣的效果。

資料庫連線池**如下:

///

///

連線物件。

///

public class pool

private guid id;

///

///

獲取連線物件的**。

///

public guid id }

private idbconnection connection;

///

///

獲取資料庫連線物件。

///

public idbconnection connection }

///

///

獲取或設定乙個值,該值指示連線物件是否已經使用,

true-

已經使用,否則沒有使用。

///

public bool isuse

///

///

獲取或設定連線物件開啟資料庫的時間。

///

public datetime opentime

}///

///

連線池管理類。

///

public static class connectionpool

///

///

獲取引數。

///

///

配置檔案中的資料庫連線字串。

private static void getparams(string connectionstring)

if (subconnectstring.indexof("max pool size", stringcomparison.invariantcultureignorecase) != -1)

if (subconnectstring.indexof("connect timeout", stringcomparison.invariantcultureignorecase) != -1)

}connectstring = newconnectstring.tostring();

getparam = true;

}///

///

根據資料庫型別建立資料庫。

///

///

資料庫連線型別。

///

指定資料庫連線型別的資料庫連線物件。

private static idbconnection createconnection(connectiontype connecttype)

}///

///

根據資料庫連線字串及資料庫型別建立連線物件。

///

///

資料庫連線字串。

///

資料庫型別。

///

連線物件。

public static pool open(string connectionstring, connectiontype connecttype)

foreach (pool pool in pools)

}if (pools.count >= maxpoolsize)

pool newpool = new pool(guid.newguid(), createconnection(connecttype), true, datetime.now);

pools.add(newpool);

newpool.connection.open();

return newpool;}}

///

///

關閉資料庫連線。

///

///

需要關閉的連線池物件。

public static void close(pool closepool)

else

timespan time = datetime.now - pools[num].opentime;

if (time.totalseconds > pooltimeout)}}

}}呼叫**:

private connectionstring = configurationmanager.connectionstrings[「accessconnectstring」].tostring();

//獲取連線物件

private pool pool=connectionpool.open(connectionstring, connectiontype.oleconnectiontype);

//獲取資料庫連線物件

idbconnection dbconnection= pool.connection;

資料庫操作

//關閉資料庫連線

connectionpool.close(pool);

Access資料庫連線池

access資料庫沒有資料庫連線池,每次開啟和關閉資料庫時都非常耗時,自己編寫了乙個簡易的資料庫連線池,新增資料庫型別還可支援其他沒有資料庫連線池的資料庫型別。該資料庫連線池要求必須更改web.config中的資料庫連線字串,新增max pool size及connect timeout兩個屬性,如...

Access資料庫連線池問題

首先是我所作的b s軟體需要多種資料庫的支援,其中就包括access資料庫。而為了達到快的速度,必須把access的連線放入資料庫連線池,所以我專門給access做了個資料庫連線池。問題出現了 就是用access連線池的時候,有的時候會出現修改過的資料不能及時的反應到介面上來。剛開始我以為是我的ac...

資料庫連線池 Redis連線池

基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...