建站常识

asp conn打开关闭函数

发布时间 | 2017/8/20  点击 | 

一个需要读写数据库的页面里包含类似<!-- #include file="conn.asp" -->的代码时,实际上,当你没有进行任何读写数据库操作时,这个数据库连接仍然是打开的,仍然在消耗着服务器的资源。

数据库连接代码封装在函数里,在需要读取时调用这个函数。让数据库连接仅在需要读取数据库时才打开,不读取时就没有任何动作.

以下是ACCESS连接代码:

Function Openconn()

dim DBFileName,Conn

DBFileName = "#-#-#abcd.mdb"

set Conn=server.createObject("ADODB.connection")

ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(DBFileName)

On Error Resume Next

conn.Open connstr

set Openconn=Conn

If Err Then

err.Clear

Conn.close:set Conn=nothing

Response.Write "对不起,数据库连接出错。"

Response.End

End If

End Function

调用方法:

将原来的 rs.open sql,conn 改成 rs.open sql,Open_conn()

同服务器跨站共享ACCESS数据库,使用数据库物理路径

Source="数据库物理路径 如E:\目录\目录\数据库名

在某个页面上调用了两次CloseConn函数就出现了以下的问题

Microsoft VBScript 运行时错误 错误 '800a01a8'

缺少对象: 'Conn'

那这个函数的主要功能是判断conn是否关闭了,还没关闭就把它关闭,那为什么会出现上面的问题

原因是IsObject判断conn,无论conn是否关闭都是返回True的。

第一次调用,conn正常被关闭,而且等于为nothing,

那第二次调用时,conn就是nothing,就被系统认为没有了这个对象,

所以我们要把函数改为以下才可以正常运行。

关闭数据库连接:CloseConn(conn)

Sub CloseConn(conn)

if IsObject(conn) then

if LCase(TypeName(conn)) <> "nothing" then

  conn.close

  set conn=nothing

end if

end if

End Sub

注:LCase(TypeName(conn)) ,LCase()一定需要的,TypeName(conn)返回的值是Nothing(大写N),那加上这个LCase把返回值都转为小写,那就万无一失了。

相关信息