- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > ASP >
- Asp實(shí)現的數據庫連接池功能函數分享
數據庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶(hù)的網(wǎng)頁(yè)應用程序中體現得尤為突出。對數據庫連接的管理能顯著(zhù)影響到整個(gè)應用程序的伸縮性和健壯性,影響到程序的性能指標。數據庫連接池正是針對這個(gè)問(wèn)題提出來(lái)的。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個(gè)現有的數據庫連接,而再不是重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的數據庫連接來(lái)避免因為沒(méi)有釋放數據庫連接而引起的數據庫連接遺漏。這項技術(shù)能明顯提高對數據庫操作的性能。
但是這項技術(shù)一般在java ,php ,.net 里面運用到,asp很少用到,因為一些企業(yè)網(wǎng)站根本就不需要這樣的技術(shù)。
也不是不能使用,下面就是研究出來(lái)的asp版本,能夠加快網(wǎng)頁(yè)的訪(fǎng)問(wèn)速度,降低數據庫的壓力。
1.數據庫連接文件 DbPool.asp
< % Const PoolSize = 10 Const Connstr = "Driver={SQL Server};Server=(local);UID=sa;word=555;Database=db" Function GetRandString(lenth) Dim rndstr,i Randomize rndstr = "" i = 1 do while i <= lenth rndstr = rndstr & Chr(cint(((120 - 98 + 1) * Rnd )+ 97)) i = i + 1 loop GetRandString = rndstr End Function Function CreateDbConn() Dim DbConn,ConnKey Set DbConn = Server.CreateObject("ADODB.Connection") DbConn.Open Connstr ConnKey = GetRandString(10) DbPool.Add ConnKey,DbConn End Function Function GetDbConn() Dim CurKey,Keys If DbPool.Count > 0 Then Keys = DbPool.Keys ' 獲取鍵名。 CurKey = Keys(0) Response.Write "Cur DbConn Key Is : " & CurKey & "<br />" Set Conn = Server.CreateObject("ADODB.Connection") Set Conn = DbPool(CurKey) If Conn.State = adStateClosed Then '如果這個(gè)連接已經(jīng)關(guān)閉,將其從池里注銷(xiāo),再新建一個(gè)可用的連接并添加到池里 DbPool.Remove CurKey Call CreateDbConn() '新建一個(gè)連接并添加到池里 Set GetDbConn = GetDbConn() Else '否則的話(huà),將其從池里注銷(xiāo),然后將復制的對象返回 DbPool.Remove CurKey Set GetDbConn = Conn Exit Function End If Else Response.Write "連接池已用完,請重新初始化應用程序" Response.End End if End Function Function FreeDbConn(DbConn) DbPool.Add GetRandString(10),DbConn End Function
2.全局文件 global.asa
<object ID="DbPool" Progid="Scripting.Dictionary" Scope="Application" runat="server"></object> <!--#include file="DbPool.asp"--> < % Sub Application_OnStart Dim ConnKey For i = 1 To PoolSize '建立指定數目的數據庫連接 CreateDbConn() Next End Sub Sub Application_OnEnd DbPool.RemoveAll End Sub %>
3.測試文件 test.asp
<!--#include file="DbPool.asp"--> < % Response.Write "Test Start:<br>" Response.Write "Current Objects count : " & DbPool.Count & "<br />" Set dbconn = Server.CreateObject("ADODB.Connection") Set dbconn = GetDbConn() Response.Write "get one connection from pool <br />" Response.Write "Current Objects count : " & DbPool.Count & "<br />" Set Rs = Server.CreateObject("ADODB.Recordset") Rs.open "select * from mkdb",dbconn,1,1 Do While Not rs.eof Response.write Rs("v_oid") & "<br />" Rs.movenext loop FreeDbConn(dbconn) Response.Write "free one connection to pool <br />" Response.Write "Current Objects count : " & DbPool.Count & "<br />" %>
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站