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

%>
(0)

相关推荐

  • Asp实现的数据库连接池功能函数分享

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

  • asp.net实现的群发邮件功能详解

    本文实例讲述了asp.net实现的群发邮件功能.分享给大家供大家参考,具体如下: 前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用,支持附件,希望对大家也有些帮助,我测试时用的是qq邮箱,成功的前提是要在邮箱设置中打开smtp服务功能,如qq邮箱设置里面的账户选项卡里面把需要的功能勾上: 其他邮箱的话原理一样~~~~~~ using System

  • python实现ip代理池功能示例

    本文实例讲述了python实现ip代理池功能.分享给大家供大家参考,具体如下: 爬取的代理源为西刺代理. 用xpath解析页面 用telnet来验证ip是否可用 把有效的ip写入到本地txt中.当然也可以写入到redis.mongodb中,也可以设置检测程序当代理池中的ip数不够(如:小于20个)时,启动该脚本来重新获取ip,本脚本的代码也要做相应的改变. # !/usr/bin/env python # -*- coding: utf-8 -*- # @Version : 1.0 # @Tim

  • asp.net 数据库连接池浅析

    1,对于ASP.NET数据库连接池可以使用一组名称-值对以链接字符串的形式配置链接池.例如,可以配置池是否有效(默认是有效的),池的最大.最小容量,用于打开链接的排队请求被阻断的时间.下面的示例字符串配置了池的最大和最小容量. "Server=(local); Integrated Security=SSPI; Database=Northwind; Max Pool Size=75; Min Pool Size=5" ASP.NET数据库连接池摘要 连接池允许应用程序从连接池中获得一

  • java配置dbcp连接池(数据库连接池)示例分享

    使用jar包:commons-dbcp-1.4.jar.commons-pool-1.6.jar.commons-logging-1.1.3.jar,另外还有数据库的jdbc驱动,适用java6及以上平台 连接池管理类 复制代码 代码如下: package cn.songxinqiang.samples.commonsdbcp.util; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.SQL

  • Java实现数据库连接池的方法

    本文实例讲述了Java实现数据库连接池的方法.分享给大家供大家参考.具体如下: package com.kyo.connection; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import j

  • Spring 数据库连接池(JDBC)详解

    数据库连接池 对一个简单的数据库应用,由于对数据库的访问不是很频繁,这时可以简单地在需要访问数据库时,就新创建一个连接,就完后就关闭它,这样做也不会带来什么性能上的开销.但是对于一个复杂的数据库应用,情况就完全不同而,频繁的建立.关闭连接,会极大地减低系统的性能,因为对于连接的使用成了系统性能的瓶颈. 通过建立一个数据库连接池以及一套连接使用管理策略,可以达到连接复用的效果,使得一个数据库连接可以得到安全.高效的复用,避免了数据库连接频繁建立.关闭的开销. 数据库连接池的基本原理是在内部对象池中

  • Asp.Net实现的通用分页函数

    本文实例讲述了Asp.Net实现的通用分页函数.分享给大家供大家参考,具体如下: 功能: 1.每页设置显示9页,超过9页,点5页后的+1页显示(可以随便修改) 2.CSS样式自己可以设置 3.无任何咋代码产生,利于搜索引擎优化 分页程序 objPDS = new PagedDataSource(); objPDS.DataSource = dtTable.DefaultView;//绑定数据源 objPDS.AllowPaging = true; objPDS.PageSize =10;//分页

  • java、php、C#、asp实现短信群发功能的方法

    本文实例讲述了java.php.C#.asp实现短信群发功能的方法.分享给大家供大家参考.具体如下: 首先去http://www.smschinese.cn/上下载jar包以及注册用户,然后调用api接口,取得秘钥 1. ASP 调用例子 <% '常用函数 '输入url目标网页地址,返回值getHTTPPage是目标网页的html代码 function getHTTPPage(url) dim Http set Http=server.createobject("MSXML2.XMLHTT

  • SpringBoot开发案例之配置Druid数据库连接池的示例

    前言 好久没有更新Spring Boot系列文章,你说忙么?也可能是,前段时间的关注点也许在其他方面了,最近项目中需要开发小程序,正好采用Spring Boot实现一个后端服务,后面会把相关的代码案例分享出来,不至于大家做小程序后端服务的时候一头雾水. 在Spring Boot下默认提供了若干种可用的连接池(dbcp,dbcp2, tomcat, hikari),当然并不支持Druid,Druid来自于阿里系的一个开源连接池,它提供了非常优秀的监控功能,下面跟大家分享一下如何与Spring Bo

随机推荐