Проверьте, открыто ли соединение SQL или закрыто

Как вы проверяете, открыт ли он или закрыт? Я использовал

 if (SQLOperator.SQLCONNECTION.State.Equals("Open"))

однако даже состояние "открыто", оно не выполняется при этой проверке.

Ответ 1

Вы должны использовать SqlConnection.State

например,

if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
   // do something
   // ...
}

Ответ 2

Вот что я использую:

if (mySQLConnection.State != ConnectionState.Open)
{
    mySQLConnection.Close();
    mySQLConnection.Open();
}

Причина, по которой я не просто использую:

if (mySQLConnection.State == ConnectionState.Closed)
{
    mySQLConnection.Open();
}

Это потому, что ConnectionState также может быть:

Broken, Connnecting, Executing, Fetching

В дополнение к

Open, Closed

Кроме того, Microsoft заявляет, что Закрытие, а затем Повторное открытие соединения "обновит значение состояния". См. Здесь http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v = vs .110). ASPX

Ответ 3

Документация .NET говорит: Свойство состояния: Побитная комбинация значений ConnectionState

Итак, я думаю, вы должны проверить

!myConnection.State.HasFlag(ConnectionState.Open)

вместо

myConnection.State != ConnectionState.Open

поскольку состояние может иметь несколько флагов.

Ответ 4

Проверьте, открыто ли соединение MySQL

ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
    return true;
}
else
{
    connection.Open();
    return true;
}

Ответ 5

вы также можете использовать этот

if (SQLCON.State == ConnectionState.Closed)
{
     SQLCON.Open();
}

Ответ 6

Этот код немного более защищен, прежде чем открывать соединение, проверьте состояние. Если состояние соединения Broken, мы должны попытаться закрыть его. Сломанный означает, что соединение было ранее открыто и не работает правильно. Второе условие определяет, что состояние соединения должно быть закрыто, прежде чем пытаться его снова открыть, чтобы код можно было вызывать повторно.

// Defensive database opening logic.

if (_databaseConnection.State == ConnectionState.Broken) {
    _databaseConnection.Close();
}

if (_databaseConnection.State == ConnectionState.Closed) {
    _databaseConnection.Open();
}

Ответ 7

Чтобы проверить состояние подключения к базе данных, вы можете просто выполнить следующие

if(con.State == ConnectionState.Open){}

Ответ 8

Я использую следующий способ sqlconnection.state

if(conexion.state != connectionState.open())
   conexion.open();