ADO连接SQL-Server数据库,1台AS400对付几十台客户机,且访问相当频繁。为了节约服务器资源,现在想在操作完成后真正断开数据连接,即断开后能在“SQL事件探查器”里面看到Audit Logout的绿色标志(目前只能在程序退出时看到这个标志)。我用Cnn.Close,Set Rs = Nothing都试过了均不行。请问ADO控件和ADO数据对象,分别应该使用什么方法?

解决方案 »

  1.   

    if rs.state<>adstateclosed then rs.closed 
    set rs=nothingconn.close
    set conn=nothing两个都要先关在nothing啊,nothing都从内存里面消掉了。怎么会没效果呢?不过ado.net的访问比ado的访问要好,哈哈
      

  2.   

    我用了ADO数据控件,和ADO数据对象混用。现在发现单独用ADO数据对象可以关闭,请问怎么操作ADO控件的关闭数据连结?
      

  3.   


        Me.Adodc1.Recordset.Close
        Set Adodc1 = Nothing
      

  4.   

    尽量的做到晚访问,早断开If Not rs Is Nothing Then
            If rs.State = 1 Then
                rs.Close
            End If
            Set rs = Nothing
        End If
    对于conn也这样处理
      

  5.   

    ADO连接SQL-Server数据库,是远程访问,只有在真正的数据需要交换时,才会消耗资源维护连接,否则你不用耽心。Set Cnn=nothing可能会节约一点点客户机的资源,但对服务器影响不大。远程数据服务用法    当在客户端的 Connection 对象上使用 Open 方法时,在 Connection 对象上打开 Recordset 之前 Open 方法其实并未建立到服务器的连接。
      

  6.   

    利用多就做成连接池,oracle的oo4o提供连接池的,会提高很多的效率。
    ado实际处理的时候也作了连接池处理的,当你set conn = nothing的时候并不直接断开,
    下次如果用相同的连接字符串连接时就从连接池当中取出来的,都是自动处理的。
      

  7.   

    Set Rs = Nothing
    Cnn.Close
    Set Cnn=Nothing
      

  8.   

    用odbc来联
    '连接数据库
    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
      

  9.   

    看到 homezj(小吉) 回的贴,我就脸红:)
      

  10.   

    '以前写的时候,记得定义的时候不能用new关键字,不然不能真正关闭(记得以前定义的时候用了new,结果关闭后restore 数据库总不成功)dim rs as adodb.recordset  '定义的时候,不要用new关键字
    set rs=new adodb.recordset '使用的时候才创建
    rs.open ...
    rs.close                   '关闭
    set rs=nothing             'set nothing