| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,外语很重要,最新的编程技术还是在国外  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 数据库 >> sqlserver >> 文章正文
数据访问-与数据库建立连接            【字体:
数据访问-与数据库建立连接
作者:-    文章来源:-    点击数:    更新时间:2006-4-16


3. 创建 Connection 对象,充分利用连接池。

看下列代码:

创建 Connection Object,打开 RecordSet
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strConnection
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open strSQL,cnn

直接打开 RecordSet
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.open strSQL,strConnection

在 asptoday 的 Enhancing Performance in ASP - Part 2 中对这两种方法进行了测试,结果表明直接打开 RecordSet 比创
建 Connection 快23%(快在页面处理上,检索数据库的速度是一样的。)所以,这篇文章的结论是:When working with a
single Recordset,pass the connection string into the ActiveConenction property.

我对此有异议:快的代码不一定是好的代码。

首先要说明的是,直接打开 RecordSet 的方法依然要创建与数据库的连接,只不过是由 ADO 自动完成的。其次,这个
Connection 只有在该页面处理完后才能被释放(不管是 Recordset.Close 还是 Set recordset = Nothing 都不能做到释放该
对象)。

Dim rs
Dim strcnn
strcnn = "Driver={SQL Server};Server=.;Database=pubs;UID=sa;PWD=;OLE DB Services=-1;"
For i = 1 To 20
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM Authors",strcnn
    rs.Close
    Set rs = Nothing
Next   


运行上面的代码,在性能监视器中你会发现数据库的连接被创建了20个!

Dim cnn,rs
strcnn = "Driver={SQL Server};Server=.;Database=pubs;" &_
    "UID=sa;PWD=;OLE DB Services=-1;"
For i = 1 To 20
    Set cnn = Server.CreateObject("ADODB.Connection")
    cnn.Open strcnn
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM Authors",cnn
    rs.Close
    Set rs = Nothing
    cnn.Close
    Set cnn = Nothing
Next

采用上面的代码,连接数只需要2个!(只为说明问题,不考虑速度)

还有一点要说明的是:服务器处理 ASP 时不是一次只处理一个,也不是一次就把整个页面处理完,没有关闭的连接只会占用更多
的资源。所以,尽快的释放 Connection ,使它回到连接池中才是良好的编程习惯。连接池是服务器共享的资源,它不属于某个
ASP,也不属于某个 Session,或者某个 Application。

WAST 是我常用的测试工具,但是测试是一种手段,代替不了实际。如果你对 WAST 的工作方式感兴趣,可以到它的主页去看看。
http://webtool.rte.microsoft.com/

4. 为多个 RecordSet创建一个 Connection 对象

Dim cnn,rs1,rs2,r3
strcnn = "Driver={SQL Server};Server=.;Database=pubs;UID=sa;PWD=;OLE DB Services=-1;"
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strcnn
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.Open "SELECT * FROM Authors1",cnn
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open "SELECT * FROM Authors2",cnn
Set rs3 = Server.CreateObject("ADODB.Recordset")

上一页  [1] [2] [3] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 用表单来提交sql(转)2

  • 用表单来提交sql(转)3

  • 用表单来提交sql(转)3

  • WIN2000下使用SQL Server错误…

  • Microsoft SQL Server 7.0数…

  • 如何恢复系统数据库?

  • 用表单来提交sql(转)

  • 用SQL Server为Web浏览器提供…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |