답변:
SqlConnection.State를 사용해야합니다.
예 :
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
대답에 IMHO를 추가해야했습니다 . 이 네임 스페이스를 잊어 버렸고 (가 using System.Data.SqlClient
) ConnectionState
추가 할 때까지 키워드 로 얻는 방법을 알아낼 수 없었 습니다. 이것이 누군가를 돕기를 바랍니다.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
않습니까? 이렇게하면 연결이 null 인 경우에도 "닫힌"상태가됩니다.
내가 사용하는 것은 다음과 같습니다.
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
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
느린 연결로 재설정을 피할 수 있는지 테스트 해야합니다. 그렇지 않습니까?
.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;
}
return true;
거죠? 메소드의 끝에 if
/ 외부에 넣으십시오 else
!
이 코드는 좀 더 방어 적이며 연결을 열기 전에 상태를 확인합니다. 연결 상태가 끊어지면 닫아야합니다. 끊어짐은 연결이 이전에 열렸으며 올바르게 작동하지 않음을 의미합니다. 두 번째 조건은 코드를 반복적으로 호출 할 수 있도록 다시 열기 전에 연결 상태를 닫아야한다는 것을 결정합니다.
// 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
열거 형입니다.
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
}
나는 다음과 같은 방식을 사용합니다 sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
존재하지 않습니다. 그랬어 ConnectionState.Open
?
SqlConnectionState
열거 형을 열거 형으로 사용하고 문자열로 변환하지 마십시오 .....