當前位置:編程學習大全網 - 源碼下載 - asp 數據庫連接池怎麽做?

asp 數據庫連接池怎麽做?

從網上找的,希望對妳有所啟發

Asp實現的數據庫連接池功能函數分享

投稿:junjie

這篇文章主要介紹了Asp實現的數據庫連接池功能函數分享,本函數能夠加快網頁的訪問速度,降低數據庫的壓力,需要的朋友可以參考下

數據庫連接是壹種關鍵的有限的昂貴的資源,這壹點在多用戶的網頁應用程序中體現得尤為突出。對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。數據庫連接池正是針對這個問題提出來的。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用壹個現有的數據庫連接,而再不是重新建立壹個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能。

但是這項技術壹般在java ,php ,.net 裏面運用到,asp很少用到,因為壹些企業網站根本就不需要這樣的技術。

也不是不能使用,下面就是研究出來的asp版本,能夠加快網頁的訪問速度,降低數據庫的壓力。

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 '如果這個連接已經關閉,將其從池裏註銷,再新建壹個可用的連接並添加到池裏

DbPool.Remove CurKey

Call CreateDbConn() '新建壹個連接並添加到池裏

Set GetDbConn = GetDbConn()

Else '否則的話,將其從池裏註銷,然後將復制的對象返回

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 />"

%>

  • 上一篇:賽爾號的所有精靈融合技能表加精靈的圖片
  • 下一篇:怎麽求等差數列的公差
  • copyright 2024編程學習大全網