¿Cómo se comprueba si está abierto o cerrado? Estaba usando
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
sin embargo, incluso si el Estado es "Abierto", falla en esta verificación.
¿Cómo se comprueba si está abierto o cerrado? Estaba usando
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
sin embargo, incluso si el Estado es "Abierto", falla en esta verificación.
Respuestas:
Deberías estar usando SqlConnection.State
p.ej,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
la respuesta, en mi humilde opinión. Olvidé este espacio de nombres (tenía using System.Data.SqlClient
) y no pude averiguar cómo obtenerlo ConnectionState
como palabra clave hasta que lo agregué. Espero que esto ayude a alguien.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? De esta forma, si la conexión es nula, también se "cierra".
Esto es lo que estoy usando:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
La razón por la que no estoy usando simplemente:
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 Cerrar y luego volver a abrir la conexión "actualizará el valor de Estado". Vea aquí 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 reinicios con conexiones lentas, ¿no es así?
La documentación de .NET dice: Propiedad de estado: una combinación bit a bit de los valores de ConnectionState
Entonces creo que deberías comprobar
!myConnection.State.HasFlag(ConnectionState.Open)
en vez de
myConnection.State != ConnectionState.Open
porque el estado puede tener múltiples banderas.
Compruebe si una conexión MySQL está abierta
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? ponerlo al final del método, fuera de if
/ else
!
también puedes usar esto
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
para cualquiera que no lo supiera o no supiera por qué no estaba funcionando
Este código es un poco más defensivo, antes de abrir una conexión, verifique el estado. Si el estado de la conexión está roto, deberíamos intentar cerrarlo. Roto significa que la conexión se abrió anteriormente y no funciona correctamente. La segunda condición determina que el estado de conexión debe cerrarse antes de intentar abrirlo nuevamente para que el código se pueda llamar repetidamente.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Para verificar el estado de conexión de la base de datos, simplemente puede hacer lo siguiente
if(con.State == ConnectionState.Open){}
Para verificar el estado de OleDbConnection, use esto:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
devuelve el ConnectionState
public override ConnectionState State { get; }
Aquí están las otras ConnectionState
enumeraciones
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
}
Uso de la siguiente manera sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
no existe; ¿te refieres ConnectionState.Open
?
SqlConnectionState
enumeración como enumeración y no la convierta en una cadena .....