欢迎光临!今天是2017年10月18日 星期三
首页 基础教程  留言薄制作  神奇FSO  ASP优化  ASP实例  SQL语法  VB教程  安全手册  综合技巧  案头必备  留言  
 综合技巧
·ASP技巧TOP10 (1)
·ASP技巧TOP10 (2)
·ASP技巧TOP10 (3)
·ASP技巧TOP10 (4)
·奇妙的文件系统对象组件
·关于在浏览器中文件上载的方法..
·存储过程分页
·在同一页面动态实现两个sel..
·用ASP实现WEB页面分用户..
·怎样用ASP访问SQL Se..
·在Web页面中执行Windo..
·ASP程序中日期型数据的格式..
·ASP中数据库操作中游标和加..
·如何在Web页面中集成文件上..
·有关win2000、IIS5..
·在您的网站中加入互动功能
·ASP服务器组件的编程
·数据库聊天室的“无刷新”技术..
·ASP页面内VBScript..
·ASP中处理#include
·关于数据库连接的一点个人见解
·利用ASP显示当前在线人数
·在ASP处理程序时,进度显示
·ASP中文本文件与数据库文件..
·FrontPage创建HTM..
·FrontPage创建HTM..
·如何使ASP输出结果不支持h..
·用几行Asp代码实现防止表单..
·在Flash中使用ASP技术
·在ASP中使用脚本语言
■ 综合技巧 > 关于数据库连接的一点个人见解
  最近经常见到有人问如何连接数据库效率最高,耗费资源最低,在这里我谈一下我的看法。连接数据库不外乎三种方法,一种是将数据库连接放到session变量中,一种是放到application变量中,再一种就是在页面中使用时打开,用完立刻关闭。尽管前两种方法用起来比较方便,但应该说第三种方法是最好的,下面我分别讲一下,由于水平所限,错误难免,请大家指正。

  session:用session的缺点显而易见,服务器会为每一个用户创建一个数据连接,直到这个用户离开或session超时,这样就会大大浪费服务器资源,如果访问量大的话,系统资源就会被耗尽,或者数据库连结数到达上界,就会造成程序出错。

  application:既然用session会出现这么多问题,那是不是用application最节省资源呢?只建立一条连接就够了,大家共用。不是这样的,如果无论多少用户只建立一条连接,同样会带来很多问题,首先是如果访问量大,一条连接肯定无法满足需要,同样会造成程序出错;其次,如果你用了私人临时表或光标,那麻烦就来了。私人临时表和光标只对当前连接可见,可是如果大家都用一条连接,那么就会产生冲突,造成程序错误。

  最后一种方法(即开即用即关):这是最好的一种方法,原因如下:打开数据库连接,使用完立即关闭,是一种良好的编程习惯,其实不仅是数据库连接对象如此,所有对象也就是说server.creatobject出来的对象理论上生存期都不能超过0.01秒(国外有人做过测试的,不是我信口开河),如果超过就会对效率产生影响。那么也许你会说每个页面都会打开一个连接,那打开的连接数不是更多,效率不是更低吗?错了,讲到这里就不能不提一下连接池(也叫共享池的概念),现在的大型数据库包括odbc本身都提供连接池的功能,他的基本原理是这样的,一个连接申请关闭时系统并不是真的关闭它,而是将它放到共享池中,如果这时有相同的连接请求,系统就会把这个连接从共享池中取出来给用户,这样就省去了关闭和打开连接的系统开销,只有当这个连接长时间不被请求时并且共性池中的连接饱和,系统才会真的干掉它。明白这个道理,你就明白尽管你在程序中请求打开和关闭连接,但系统并不一定要增加这些开销的。

  道理讲完了,现在给例子。下面是打开和关闭数据库连接的两个函数,你可以把它存为一个include文件,使用时包含进来就行了。例子连接的数据库是sql server 7.0,我没用odbc,因为用oledb效率高的多。

<script language = VBScript runat = server>
 '---------------------------------------------------------------------------------
 '
 ' file name :    connectdb.inc
 '
 ' Description:   数据库连接
 '
 ' function list :  OpenDbConnection(a_strDataName , a_strServerName) :打开数据库连接
 '          parameter: a_strDateName , 数据库服务器名 
 '                a_strServerName :数据库server名
 '
 '          CloseDbConnection(a_objDbConn)  :关闭数据库连接
 '          parameter: a_ObjDbConn ,连接对象
 '
 '
 ' date:       2000/05/03
 '
 ' Author:      LiuYunpeng
 '
 ' History:     2000/05/03  version 1.0
 '         2000/06/03  modified function opendbconnection's parameters
 '                by LiuYunpeng
 '--------------------------------------------------------------------------------

  
  Function OpenDbConnection(a_strDataName , a_strServerName)
    dim m_DbConn , m_strConn
    Set m_dbConn = Server.CreateObject("ADODB.Connection")
    m_strConn = "Provider=Sqloledb ; User ID = sa ; Password= ; Initial Catalog = "&a_strDataName&" ; Data Source = "&a_strServerName 
    m_dbConn.open m_strConn
    Call CheckError()
   
    'return this database connection
    Set OpenDbConnection = m_dbConn 
  end function
  
  sub CloseDbConnection(a_objDbconn)
    a_objDbconn.close
    set a_objDbConn = nothing
  end sub  
     
    
</script>  



简单说一下使用方法,假设你的数据库server是"server1" , 数据库是"mydatabase" , 则使用如下

<%
  dim m_objConn
  
  '打开数据库连接
  set m_objConn = OpenDbConnection("mydatabase" , "server1")
  ....

  '关闭数据库连接
  CloseDbConnection m_objConn
%>
■今日推荐:数据库聊天室的“无刷新”技术要点

本网站是学习网站,内容整理大多来自互联网,尽量标明了出处,如果侵犯了您的权力请通知我,立即纠正
欢迎提出宝贵建议,提供相关资料,以便相互学习,共同提高!