我用:
Private Sub ComOK_Click()
   Dim SQLstr As String,cnstr AS String
  Dim cn AS New ADODB.Connection'连接对象
   Dim rs As New ADODB.Recordset'记录集对象
   cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
   cn.open' 打开数据库连接
   rs.CursorLocation =adUseClient
   sqlstr="slect * from XXX表"
   rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
   set datagrid1.datasource=rs
   datagrid1.refresh
   rs.close'关闭记录集对象
   set rs=nothing
End Sub
请问,如何判断与服务器连接是否成功,而避免应用程序长时间连接服务器而出现“未相应”的情况

解决方案 »

  1.   

    Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
       cn.open' 打开数据库连接
          在这里添加错误故障处理
       简单来说,这一步只存在打开与打不开的问题
       on error then exit sub   rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
    End Sub
      

  2.   

    楼上这位的错误捕捉是错的vb6没有 on error then 的用法on error goto Errhandler
    '你的数据库操作语句
    .
    .
    .
    .
    Errhandler:
    select case err.number
    case XXX
    '捕捉错误
    cass 0
    '没有错误
    end select
      

  3.   

    cn.ConnectionTimeout = 设定时间
      

  4.   

    Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       cnstr = cn.open "Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串,对不起有点手误cn.open不要
       cn.open' 打开数据库连接
       rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
    End Sub现在修如下:Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       cnstr ="Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
       cn.open cnstr' 打开数据库连接
       if cn.State=AdStateOpen then
          msgbox "数据库连接成功!!!"
      else 
          msbox "数据库连接失败!!!"
          exit sub
       end if
       rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
    End Sub
      

  5.   

    长时间未响应,你要根据你的服务器情况设置连接对象的ConnectionTimeout 属性。
    修改如下:
    Private Sub ComOK_Click()
       Dim SQLstr As String,cnstr AS String
      Dim cn AS New ADODB.Connection'连接对象
       Dim rs As New ADODB.Recordset'记录集对象
       On Error GoTo Show_ErrMsg'错误捕足
       cnstr ="Provider=SQLOLEDB;Driver={SQL Server};Server=服务器名;Uid=用户名;Pwd=密码;Database=数据库名" '连接字符串
      cn.ConnectionTimeout =20'设置超时时间
       cn.open cnstr' 打开数据库连接
       if cn.State=AdStateOpen then
          msgbox "数据库连接成功!!!"
      else 
          msbox "数据库连接失败!!!"
          exit sub
       end if
       rs.CursorLocation =adUseClient
       sqlstr="slect * from XXX表"
       rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
       set datagrid1.datasource=rs
       datagrid1.refresh
       rs.close'关闭记录集对象
       set rs=nothing
       exit sub
    Show_ErrMsg:
       MsgBox "数据库连接错误:" & Err.Description, 16, "错误"
       Unload me
       Exit Sub
    End Sub
      

  6.   

    chenyu5188(蓝色情调) 
    高手我正用崇拜的眼光看着你
    :)
      

  7.   

    on error goto ErrorHandle
    ......
    exit sub 
    ErrorHandle:
    msgbox err.Description就可以了如果连接不上自动会返回错误的至于连接等待时间是可以设置的.
      

  8.   

    打开数据库时用adAsyncConnect异步连接吧,不然连接时程序会停止响应。
       conn.Open , , , adAsyncConnect '该语句不会等带连接
       chkstate.Show VbModal
    conn是定义在模块内的Public对象;
    chkstate是检查连接状态的窗体,上面有一个定时器控件,用于检测连接状态。可在定时器控件内加入代码:
       On Error Goto ErrorHandler:
       if conn.State = adStateOpen Then Unload Me
       Exit Sub
    ErrorHandler:
       Msgbox "连接数据库失败!"
    并且可以在该窗体上加一个进度条或者动画。。呵呵,反正我是这么做的