web-dev-qa-db-ja.com

SQL接続が開いているか閉じているかを確認する

それが開いているか閉じているかをどのように確認しますか

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

ただし、状態が「オープン」であっても、このチェックでは失敗します。

93
user222427

SqlConnection.State を使用する必要があります

例えば、

using System.Data;

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

私が使用しているものは次のとおりです。

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

47
therealjumbo

.NETのドキュメントには、次のように記載されています。状態プロパティ:ConnectionState値のビットごとの組み合わせ

だから私はあなたがチェックすべきだと思う

!myConnection.State.HasFlag(ConnectionState.Open)

の代わりに

myConnection.State != ConnectionState.Open

stateは複数のフラグを持つことができるためです。

19
csname1910

MySQL接続が開いているかどうかを確認します

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

これも使えます

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

このコードはもう少し防御的です。接続を開く前に、状態を確認してください。接続状態がBrokenの場合、閉じようとする必要があります。壊れているとは、接続が以前に開かれ、正しく機能していないことを意味します。 2番目の条件は、コードを繰り返し呼び出すことができるように、接続状態を再度開く前に閉じる必要があることを決定します。

// Defensive database opening logic.

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

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

データベースの接続状態を確認するには、次のようにするだけです。

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

OleDbConnectionの状態を確認するには、これを使用します。

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

StateConnectionStateを返します

public override ConnectionState State { get; }

他のConnectionState enumは次のとおりです。

public enum ConnectionState
    {
        //
        // Summary:
        //     The connection is closed.
        Closed = 0,
        //
        // Summary:
        //     The connection is open.
        Open = 1,
        //
        // Summary:
        //     The connection object is connecting to the data source. (This value is reserved
        //     for future versions of the product.)
        Connecting = 2,
        //
        // Summary:
        //     The connection object is executing a command. (This value is reserved for future
        //     versions of the product.)
        Executing = 4,
        //
        // Summary:
        //     The connection object is retrieving data. (This value is reserved for future
        //     versions of the product.)
        Fetching = 8,
        //
        // Summary:
        //     The connection to the data source is broken. This can occur only after the connection
        //     has been opened. A connection in this state may be closed and then re-opened.
        //     (This value is reserved for future versions of the product.)
        Broken = 16
    }
1