Как вы проверяете, открыт ли он или закрыт? Я использовал
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
однако даже состояние "открыто", оно не выполняется при этой проверке.
Как вы проверяете, открыт ли он или закрыт? Я использовал
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
однако даже состояние "открыто", оно не выполняется при этой проверке.
Вы должны использовать SqlConnection.State
например,
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
Вот что я использую:
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
Документация .NET говорит: Свойство состояния: Побитная комбинация значений ConnectionState
Итак, я думаю, вы должны проверить
!myConnection.State.HasFlag(ConnectionState.Open)
вместо
myConnection.State != ConnectionState.Open
поскольку состояние может иметь несколько флагов.
Проверьте, открыто ли соединение MySQL
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
вы также можете использовать этот
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
Этот код немного более защищен, прежде чем открывать соединение, проверьте состояние. Если состояние соединения Broken, мы должны попытаться закрыть его. Сломанный означает, что соединение было ранее открыто и не работает правильно. Второе условие определяет, что состояние соединения должно быть закрыто, прежде чем пытаться его снова открыть, чтобы код можно было вызывать повторно.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Чтобы проверить состояние подключения к базе данных, вы можете просто выполнить следующие
if(con.State == ConnectionState.Open){}
Я использую следующий способ sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();