[c#] SQL 연결이 열려 있는지 또는 닫혀 있는지 확인

내가 사용하고 있던 열려 있는지 닫혀 있는지 어떻게 확인합니까?

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

그러나 State가 ‘Open’인 경우에도이 검사에서 실패합니다.



답변

SqlConnection.State를 사용해야합니다.

예 :

using System.Data;

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

State는 여러 플래그를 가질 수 있기 때문입니다.


답변

MySQL 연결이 열려 있는지 확인

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


답변

당신은 또한 이것을 사용할 수 있습니다

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


답변

이 코드는 좀 더 방어 적이며 연결을 열기 전에 상태를 확인합니다. 연결 상태가 끊어지면 닫아야합니다. 끊어짐은 연결이 이전에 열렸으며 올바르게 작동하지 않음을 의미합니다. 두 번째 조건은 코드를 반복적으로 호출 할 수 있도록 다시 열기 전에 연결 상태를 닫아야한다는 것을 결정합니다.

// Defensive database opening logic.

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

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


답변

데이터베이스 연결 상태를 확인하려면 다음을 수행하면됩니다.

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