Jak sprawdzić, czy jest otwarty czy zamknięty, którego używałem
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
jednak nawet stan „otwarty” nie powiedzie się w tej kontroli.
Jak sprawdzić, czy jest otwarty czy zamknięty, którego używałem
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
jednak nawet stan „otwarty” nie powiedzie się w tej kontroli.
Odpowiedzi:
Powinieneś używać SqlConnection.State
na przykład,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
w odpowiedzi, IMHO. Zapomniałem tej przestrzeni nazw (miałem using System.Data.SqlClient
) i nie mogłem wymyślić, jak uzyskać ConnectionState
jako słowo kluczowe, dopóki go nie dodałem. Mam nadzieję, że to komuś pomoże.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? W ten sposób, jeśli połączenie jest zerowe, jest również „zamknięte”.
Oto czego używam:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Powód, dla którego nie używam po prostu:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Dzieje się tak, ponieważ ConnectionState może być również:
Broken, Connnecting, Executing, Fetching
Oprócz
Open, Closed
Ponadto firma Microsoft stwierdza, że zamknięcie, a następnie ponowne otwarcie połączenia „odświeży wartość stanu”. Zobacz tutaj http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
uniknąć resetowania przy wolnych połączeniach, prawda?
Dokumentacja .NET mówi: Właściwość stanu: bitowa kombinacja wartości ConnectionState
Więc myślę, że powinieneś sprawdzić
!myConnection.State.HasFlag(ConnectionState.Open)
zamiast
myConnection.State != ConnectionState.Open
ponieważ stan może mieć wiele flag.
Sprawdź, czy połączenie MySQL jest otwarte
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? umieść go na końcu metody, poza if
/ else
!
możesz również tego użyć
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
dla każdego, kto nie wiedział lub nie wiedział, dlaczego to nie działa
Ten kod jest trochę bardziej defensywny, przed otwarciem połączenia sprawdź stan. Jeśli stan połączenia jest uszkodzony, powinniśmy spróbować go zamknąć. Zepsuty oznacza, że połączenie zostało wcześniej otwarte i nie działa poprawnie. Drugi warunek określa, że stan połączenia musi zostać zamknięty przed próbą ponownego otwarcia, aby kod mógł być wywoływany wielokrotnie.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Aby sprawdzić stan połączenia z bazą danych, możesz po prostu wykonać następujące czynności
if(con.State == ConnectionState.Open){}
Aby sprawdzić stan OleDbConnection, użyj tego:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
Zwróć ConnectionState
public override ConnectionState State { get; }
Oto inne ConnectionState
wyliczenie
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
}
Używam następującego sposobu sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
nie istnieje; pan miał na myśli ConnectionState.Open
?
SqlConnectionState
wyliczenia jako wyliczenia i nie zamieniaj go w ciąg .....