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把返回值都转为小写,那就万无一失了。