それが開いているか閉じているかをどのように確認しますか
if (SQLOperator.SQLCONNECTION.State.Equals("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();
}
このコードはもう少し防御的です。接続を開く前に、状態を確認してください。接続状態がBrokenの場合、閉じようとする必要があります。壊れているとは、接続が以前に開かれ、正しく機能していないことを意味します。 2番目の条件は、コードを繰り返し呼び出すことができるように、接続状態を再度開く前に閉じる必要があることを決定します。
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
データベースの接続状態を確認するには、次のようにするだけです。
if(con.State == ConnectionState.Open){}
OleDbConnectionの状態を確認するには、これを使用します。
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
はConnectionState
を返します
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
}