web-dev-qa-db-fra.com

Vérifier si la connexion SQL est ouverte ou fermée

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.

94
user222427

Vous devriez utiliser SqlConnection.State

par exemple,

using System.Data;

if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
   // do something
   // ...
}
154
user195488

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

47
therealjumbo

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.

20
csname1910

Vérifier si une connexion MySQL est ouverte

ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
    return true;
}
else
{
    connection.Open();
    return true;
}
8
Louie Bacaj

vous pouvez aussi utiliser ceci

if (SQLCON.State == ConnectionState.Closed)
{
     SQLCON.Open();
}
6
bitu pascal

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();
}
4
GBGOLC

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){}
3
ImranNaqvi

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
    }
1
Manjunath Bilwar