Wie überprüfen Sie, ob es offen oder geschlossen ist, das ich verwendet habe?
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
Selbst wenn der Status "Offen" ist, schlägt dies bei dieser Prüfung fehl.
Wie überprüfen Sie, ob es offen oder geschlossen ist, das ich verwendet habe?
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
Selbst wenn der Status "Offen" ist, schlägt dies bei dieser Prüfung fehl.
Antworten:
Sie sollten SqlConnection.State verwenden
z.B,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
in der Antwort hinzufügen sollen , IMHO. Ich habe diesen Namespace vergessen (hatte using System.Data.SqlClient
) und konnte nicht herausfinden, wie ich ConnectionState
als Schlüsselwort komme, bis ich ihn hinzugefügt habe. Hoffe das hilft jemandem.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? Auf diese Weise wird die Verbindung, wenn sie null ist, auch "geschlossen".
Folgendes verwende ich:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Der Grund, warum ich nicht einfach benutze:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Liegt daran, dass der ConnectionState auch sein kann:
Broken, Connnecting, Executing, Fetching
Zusätzlich zu
Open, Closed
Darüber hinaus gibt Microsoft an, dass durch Schließen und erneutes Öffnen der Verbindung "der Wert von State aktualisiert wird". Siehe hier http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
das Zurücksetzen bei langsamen Verbindungen vermeiden sollten, oder?
In der .NET-Dokumentation heißt es: State Property: Eine bitweise Kombination der ConnectionState-Werte
Also ich denke du solltest es überprüfen
!myConnection.State.HasFlag(ConnectionState.Open)
anstatt
myConnection.State != ConnectionState.Open
weil State mehrere Flags haben kann.
Überprüfen Sie, ob eine MySQL-Verbindung geöffnet ist
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? Setzen Sie es am Ende der Methode außerhalb des if
/ else
!
Sie können dies auch verwenden
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
für alle, die nicht wussten oder nicht wussten, warum es nicht funktionierte
Dieser Code ist etwas defensiver, bevor Sie eine Verbindung öffnen, überprüfen Sie den Status. Wenn der Verbindungsstatus unterbrochen ist, sollten wir versuchen, ihn zu schließen. Unterbrochen bedeutet, dass die Verbindung zuvor geöffnet wurde und nicht richtig funktioniert. Die zweite Bedingung bestimmt, dass der Verbindungsstatus geschlossen werden muss, bevor versucht wird, ihn erneut zu öffnen, damit der Code wiederholt aufgerufen werden kann.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Um den Datenbankverbindungsstatus zu überprüfen, gehen Sie einfach wie folgt vor
if(con.State == ConnectionState.Open){}
Verwenden Sie Folgendes, um den OleDbConnection-Status zu überprüfen:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
Gib die ... wieder ConnectionState
public override ConnectionState State { get; }
Hier sind die anderen ConnectionState
Aufzählungen
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
}
Ich benutze die folgende Art und Weise sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
existiert nicht; meinst du ConnectionState.Open
?
SqlConnectionState
Aufzählung als Aufzählung und