下面代码判断数据库是否连接,但是当数据库停止后,运行至sqlconn.open就报错,应该如何解决
string SqlState;
string strConn;
System.Data.SqlClient.SqlConnection sqlConn=new System.Data.SqlClient.SqlConnection();
strConn="server=localhost;uid=sa;database=Northwind";
sqlConn.ConnectionString=strConn;
         SqlState=sqlConn.State.ToString();
sqlConn.Open();
         if (SqlState=="Open")
             console.writeline("sucsse")
         else 
              console.writeline("faile")
          
           

解决方案 »

  1.   

    我一般的方法是先判断有无开sqlserver服务,然后在测试连接
    public static bool TestConnection(string connstr)
    {
    IPHostEntry iphe = null;
    bool connectFlag = false;
    bool hostFindFlag = true;
    try
    {
    string hostName = GetServerFromConnStr(connstr);
    if(hostName == ".")
    hostName = "127.0.0.1";
    iphe = Dns.Resolve(hostName);
    }
    catch(Exception e)
    {
    hostFindFlag = false;
    Console.WriteLine(e.Message);
    } if(hostFindFlag)
    {
    foreach(IPAddress  ipad in iphe.AddressList)
    {
    try
    {
    IPEndPoint ipe = new IPEndPoint(ipad, 1433);
    Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    tempSocket.Connect(ipe);
    if(tempSocket.Connected)
    connectFlag = true;
    }
    catch(SocketException e)
    {
    Console.WriteLine(e.Message);
    }
    }
    } if(connectFlag)
    {
    SqlConnection sqlConn = new SqlConnection(connstr + ";Connection Timeout=10");
    try
    {
    sqlConn.Open();
    if(sqlConn.State == System.Data.ConnectionState.Open)
    sqlConn.Dispose();
    return true;
    }
    catch(SqlException e)
    {
    Console.WriteLine(e.Message);
    sqlConn.Dispose();
    }
    catch(Exception e)
    {
    Console.WriteLine(e.Message);
    }
    }
    return false;
    }
      

  2.   

    sqlConn.State == System.Data.ConnectionState.Open
      

  3.   

    sqlConn.State.Equal(System.Data.ConnectionState.Open)
      

  4.   

    sqlConn.State != System.Data.ConnectionState.Closed
      

  5.   

    sqlConn.State != System.Data.ConnectionState.Closed
      

  6.   

    运行Open出错,那你就处理错误,就知道连接有问题了,
    通常断定是否连接我用sqlConn.State == System.Data.ConnectionState.Open
      

  7.   

    sqlConn.State == System.Data.ConnectionState.Open 属于正解
      

  8.   

    我是想在open之前做判断,如果一切正常就open,否则就提示