Comment vérifiez-vous s'il est ouvert ou fermé J'utilisais
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
cependant, même si l'État est "ouvert", il échoue à cette vérification.
Vous devriez utiliser SqlConnection.State
par exemple,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
Voici ce que j'utilise:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
La raison pour laquelle je n'utilise pas simplement:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Est-ce parce que le ConnectionState peut aussi être:
Broken, Connnecting, Executing, Fetching
En plus de
Open, Closed
En outre, Microsoft déclare que la fermeture, puis la réouverture de la connexion "actualisera la valeur de l'état". Voir ici http://msdn.Microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state (v = vs.110) .aspx
La documentation .NET indique: State Property: une combinaison au niveau du bit des valeurs ConnectionState
Donc je pense que tu devrais vérifier
!myConnection.State.HasFlag(ConnectionState.Open)
au lieu de
myConnection.State != ConnectionState.Open
car State peut avoir plusieurs drapeaux.
Vérifier si une connexion MySQL est ouverte
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
vous pouvez aussi utiliser ceci
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
Ce code est un peu plus défensif, avant d'ouvrir une connexion, vérifiez l'état. Si l'état de connexion est Brisé, nous devrions essayer de le fermer. Cassé signifie que la connexion a déjà été ouverte et ne fonctionne pas correctement. La deuxième condition détermine que l'état de la connexion doit être fermé avant de tenter de l'ouvrir à nouveau afin que le code puisse être appelé à plusieurs reprises.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Pour vérifier l'état de la connexion à la base de données, vous pouvez simplement procéder comme suit
if(con.State == ConnectionState.Open){}
Pour vérifier l'état OleDbConnection, utilisez ceci:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
retourne le ConnectionState
public override ConnectionState State { get; }
Voici l'autre 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
}