当SQL没有打开服务或根本不存在时,程序连接停止反应,怎样才能知道服务没有打开或不存在SQL SERVER ,在程序提示出来。
Public Sub Main()
If App.PrevInstance = True Then
        MsgBox " 系统巳在运行中 !!!   ", vbCritical
        End
End IfScreen.MousePointer = 11
If Not ServerConnect("1") Then
MsgBox "Error Network!"
Exit Sub
End If
MDIFrmMain.Show
'frmLogin.Show 1
Screen.MousePointer = 0
End Sub
'数据连接函数
Public Function ServerConnect(DBMode As String) As Boolean
    Dim strConnectString As String
        
    If DBMode = "0" Then
    strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Hotel.MDB;Jet OLEDB:Database Password =hxf918168"
    Else
    strConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=hxf918168;Initial Catalog=Hotel;Data Source=hxfkof"
    End If
    
    On Error GoTo ErrHandle:
    ServerConnect = False
    adoCon.ConnectionTimeout = 100
    adoCon.Open strConnectString
    ServerConnect = True
    Exit Function
ErrHandle:
    Dim adoErr As ADODB.Error
    If adoCon.Errors.Count > 0 Then
        For Each adoErr In adoCon.Errors
            MsgBox "[Error Code] " & adoErr.Number & Chr(13) & adoErr.Description, vbCritical + vbOKOnly, "连接数据库提示"
        Next adoErr
    End If
End Function

解决方案 »

  1.   

    没有连接成功的话自然会产生错误,但这也仅是知道没有连接上,到底是因为网络不通、还是数据库没启动,那就无法知道了。
    一般的数据库连接部分,都是只要告诉客户无法访问到数据库,由用户自己去看到底是什么原因,这种做法一般就足够(我还没有提供给客户更详细的信息)。但是如果真的需要知道到底是哪类原因的话,你可以试着使用SQL Server的对象,其中有包括连接一个数据库、管理、控制SQL Server等强大的功能,而至于网络通不通,那只要用Socks去访问SQL Server的1433端口就可以了,当然,在程序用Ping的方式也可以。