• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Asp实现的数据库连接池功能函数分享
    POST TIME:2021-10-18 06:32

    数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

    但是这项技术一般在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 />"
     
    %>

    上一篇:Asp中使用JQuery的AJAX提交中文乱码解决方法
    下一篇:Excel连接字符串中的HDR、IMEX参数详解
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信