c# - query - Compruebe si la conexión SQL está abierta o cerrada
sqlconnection c# parameters (8)
Comprueba si hay una conexión MySQL abierta
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
¿Cómo se verifica si está abierto o cerrado? Estaba usando
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
sin embargo, incluso si el Estado es ''Abierto'', falla en este control.
Debería estar usando SqlConnection.State
p.ej,
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
Este código es un poco más defensivo, antes de abrir una conexión, verifica el estado. Si el estado de la conexión está roto, entonces debemos tratar de cerrarlo. Roto significa que la conexión se abrió previamente y no funciona correctamente. La segunda condición determina que el estado de conexión debe cerrarse antes de intentar abrirlo de nuevo para que el código pueda ser llamado repetidamente.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Esto es lo que estoy usando:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
La razón por la que no estoy simplemente usando:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Es porque ConnectionState también puede ser:
Broken, Connnecting, Executing, Fetching
Además de
Open, Closed
Además, Microsoft afirma que el cierre y la reapertura de la conexión "actualizarán el valor del estado". Vea aquí http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
La documentación de .NET dice: Propiedad del estado: una combinación bit a bit de los valores de ConnectionState
Entonces creo que deberías verificar
!myConnection.State.HasFlag(ConnectionState.Open)
en lugar de
myConnection.State != ConnectionState.Open
porque el estado puede tener múltiples banderas.
Para verificar el estado de conexión de la base de datos puede simplemente hacer lo siguiente
if(con.State == ConnectionState.Open){}
Uso de la siguiente manera sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
también puedes usar esto
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}