Access資料庫連線池

2022-03-04 14:59:24 字數 2961 閱讀 8895

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

該資料庫連線池要求必須更改web.config中的資料庫連線字串,新增max pool size及connect timeout兩個屬性,如:

"accessconnectstring

" connectionstring="

」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.作用 ...