ADO连接SQL-Server数据库,1台AS400对付几十台客户机,且访问相当频繁。为了节约服务器资源,现在想在操作完成后真正断开数据连接,即断开后能在“SQL事件探查器”里面看到Audit Logout的绿色标志(目前只能在程序退出时看到这个标志)。我用Cnn.Close,Set Rs = Nothing都试过了均不行。请问ADO控件和ADO数据对象,分别应该使用什么方法?
调试欢乐多
set rs=nothingconn.close
set conn=nothing两个都要先关在nothing啊,nothing都从内存里面消掉了。怎么会没效果呢?不过ado.net的访问比ado的访问要好,哈哈
Me.Adodc1.Recordset.Close
Set Adodc1 = Nothing
If rs.State = 1 Then
rs.Close
End If
Set rs = Nothing
End If
对于conn也这样处理
ado实际处理的时候也作了连接池处理的,当你set conn = nothing的时候并不直接断开,
下次如果用相同的连接字符串连接时就从连接池当中取出来的,都是自动处理的。
Cnn.Close
Set Cnn=Nothing
'连接数据库
Private Sub Connect()
Dim TmpStat As Long 'SQLConnect()函数的返回值
'如果连接标记为真,则返回。否则会出错
If IsConnect = True Then
Exit Sub
End If
'分配环境句柄,保存在变量Henv中
If SQLAllocEnv(Henv) Then
MsgBox "无法初始化ODBC环境!", , "ODBC API执行错误"
End
End If
'根据环境句柄,分配连接句柄,保存在变量Hdbc中
If SQLAllocConnect(Henv, Hdbc) Then
MsgBox "无法连接ODBC!", , "ODBC API执行错误"
End
End If
'根据连接句柄、数据源、用户名和密码连接指定的数据库
TmpStat = SQLConnect(Hdbc, DSN, Len(DSN), DB_USER_NAME, _
Lench(DB_USER_NAME), DB_PASSWORD, Len(DB_PASSWORD))
'如果连接不成功则退出程序
If TmpStat <> SQL_SUCCESS And _
TmpStat <> SQL_SUCCESS_WITH_INFO Then
MsgBox "无法获得连接句柄!", , "ODBC API执行错误"
IsConnect = True
Disconnect
End
End If
'设置连接标记
IsConnect = True
End Sub'断开与数据库的连接
Private Sub Disconnect()
Dim Rc As Long
'如果连接标记为假,标明已经断开连接,则直接返回
If IsConnect = False Then
Exit Sub
End If
'断开连接
Rc = SQLDisconnect(Hdbc)
'释放连接句柄
Rc = SQLFreeConnect(Hdbc)
'释放环境句柄
Rc = SQLFreeEnv(Henv)
IsConnect = False
End Sub
set rs=new adodb.recordset '使用的时候才创建
rs.open ...
rs.close '关闭
set rs=nothing 'set nothing