VB 和 SQL Server 连接,当连接不上或者数据库服务器关了,提示出错,该如何处理?
Set db = New Connection
  db.Open "PROVIDER=MSDASQL;" + "DRIVER={SQL Server};" + "SERVER=pc15;" + "DATABASE=tsg;" + "UID=sa;" + "PWD="

解决方案 »

  1.   

    只能on error Public adoCN As New ADODB.Connection       '定义数据库的连接存放数据和代码
    Public SqlCommand As New ADODB.Command     '定义 SQL 命令
    Dim adoDateTime As New ADODB.Recordset     '获取 NT-SERVER 时间
    '***********************************************************************
    '*  功能:与 SQL SERVER 数据库建立连接并取出服务器时间
    '***********************************************************************Public Function OpenConnection() As String '打开数据库
        On Error GoTo SQLConErr
        With adoCN
            .CursorLocation = adUseClient
            .Provider = "sqloledb"
            .Properties("Data Source").Value = cNtServerName
            .Properties("Initial Catalog").Value = cDatabaseName
            .Properties("User ID") = cSQLUserName
            .Properties("Password") = cSQLPassword
            .Properties("prompt") = adPromptNever
            .ConnectionTimeout = 15
            .Open
            
            If .State = adStateOpen Then
                adoDateTime.Open "select getdate()", adoCN, adOpenStatic, adLockOptimistic
                cServerDate = Format(adoDateTime(0), "yyyy-mm-dd")
                cServertime = Mid(adoDateTime(0), 10)
            Else
                MsgBox "数据库连接失败,请找系统管理员进行检查 !", 16, cProgramName
                End
            End If
        End With
        
        SqlCommand.ActiveConnection = adoCN
        SqlCommand.CommandType = adCmdText
        Exit Function
    SQLConErr:
        Select Case Err.Number
            Case -2147467259
                MsgBox "找不到指定的SQL Server服务器或者数据库不存在,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case -2147217843
                MsgBox "指定的SQL Server数据库用户不存在或口令错误,请重新设置!", vbExclamation
                F_SetSystem.Show 1
            Case Else
                MsgBox "数据环境连接失败,请找系统管理员进行检查 !", 16, cProgramName
        End Select
        OpenConnection
    End Function
      

  2.   

    捕获错误,判断,处理。
    1.用on error goto err_done
    在err_done处处理错误
    2.用on error resume next
    在open后用if (err.number<>0) then来判断错误,进行处理供参考。^_^
      

  3.   

    看看他的错误代号处理着代号if err.Number=代号 then msgbox "数据库关闭"