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