Як перевірити, чи він відкритий чи закритий я використовував
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
однак, навіть держава є "відкритою", вона не дає змоги в цьому перевірці.
Як перевірити, чи він відкритий чи закритий я використовував
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
однак, навіть держава є "відкритою", вона не дає змоги в цьому перевірці.
Відповіді:
Ви повинні використовувати SqlConnection.State
наприклад,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
у відповідь, ІМХО. Я забув це простір імен (мав using System.Data.SqlClient
) і не зміг зрозуміти, як отримати ConnectionState
ключове слово, поки не додав його. Сподіваюся, що це комусь допоможе.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? Таким чином, якщо з'єднання недійсне, воно також "закрите".
Ось що я використовую:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Причиною я не просто користуюся:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Це тому, що ConnectionState також може бути:
Broken, Connnecting, Executing, Fetching
Окрім
Open, Closed
Додатково Microsoft заявляє, що закриття та повторне відкриття з'єднання "оновить значення стану". Дивіться тут http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
не уникати скидів із повільними зв’язками, чи не так?
Документація .NET говорить: Державне властивість: побітна комбінація значень ConnectionState
Тому я думаю, ви повинні перевірити
!myConnection.State.HasFlag(ConnectionState.Open)
замість
myConnection.State != ConnectionState.Open
тому що в штаті може бути кілька прапорів.
Перевірте, чи підключено MySQL
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? покладіть його в кінці методу, поза if
/ else
!
Ви також можете використовувати це
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
для тих, хто не знав або не знав, чому це не працює
Цей код трохи захисніший, перш ніж відкривати з'єднання, перевірте стан. Якщо стан з'єднання розірвано, ми повинні спробувати його закрити. Розірване означає, що з'єднання було раніше розімкнуто і не працює належним чином. Друга умова визначає, що стан з'єднання необхідно закрити перед спробою відкрити його знову, щоб код можна було викликати повторно.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Щоб перевірити стан підключення до бази даних, ви можете просто виконати наступне
if(con.State == ConnectionState.Open){}
Щоб перевірити стан OleDbConnection, використовуйте це:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
повернути ConnectionState
public override ConnectionState State { get; }
Ось інші ConnectionState
перерахунки
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
}
Я використовую наступний спосіб sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
не існує; ти мав на увазі ConnectionState.Open
?
SqlConnectionState
enum як enum, а не перетворюйте його на рядок .....