Como você verifica se ele está aberto ou fechado?
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
no entanto, mesmo o Estado é 'Aberto', ele falha nesta verificação.
Como você verifica se ele está aberto ou fechado?
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
no entanto, mesmo o Estado é 'Aberto', ele falha nesta verificação.
Respostas:
Você deve usar SqlConnection.State
por exemplo,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
na resposta, IMHO. Esqueci esse namespace (tinha using System.Data.SqlClient
) e não consegui descobrir como obter ConnectionState
uma palavra-chave até adicioná-lo. Espero que isso ajude alguém.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? Assim, se a conexão for nula, ela também será "fechada".
Aqui está o que estou usando:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
A razão pela qual não estou simplesmente usando:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
É porque o ConnectionState também pode ser:
Broken, Connnecting, Executing, Fetching
Além de
Open, Closed
Além disso, a Microsoft afirma que Fechar e, em seguida, reabrir a conexão "atualizará o valor do Estado". Veja aqui http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
para evitar reinicializações com conexões lentas, não é?
A documentação do .NET diz: Propriedade de estado: uma combinação bit a bit dos valores de ConnectionState
Então eu acho que você deve verificar
!myConnection.State.HasFlag(ConnectionState.Open)
ao invés de
myConnection.State != ConnectionState.Open
porque o estado pode ter vários sinalizadores.
Verifique se uma conexão MySQL está aberta
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? coloque no final do método, fora do if
/ else
!
você também pode usar isso
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
para qualquer um que não soubesse ou não soubesse por que não estava funcionando
Este código é um pouco mais defensivo, antes de abrir uma conexão, verifique o estado. Se o estado da conexão for interrompido, devemos tentar fechá-la. Quebrado significa que a conexão foi aberta anteriormente e não está funcionando corretamente. A segunda condição determina que o estado da conexão deve ser fechado antes de tentar abri-lo novamente para que o código possa ser chamado repetidamente.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Para verificar o estado de conexão do banco de dados, você pode simplesmente fazer o seguinte
if(con.State == ConnectionState.Open){}
Para verificar o estado OleDbConnection, use isso:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
devolver o ConnectionState
public override ConnectionState State { get; }
Aqui estão os outros 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
}
Eu uso a seguinte maneira sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
não existe; você quis dizer ConnectionState.Open
?
SqlConnectionState
enum como um enum e não o transforme em uma string .....