Bagaimana Anda memeriksa apakah itu terbuka atau tertutup yang saya gunakan
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
Namun, bahkan Negara bagian 'Terbuka' gagal pada pemeriksaan ini.
Bagaimana Anda memeriksa apakah itu terbuka atau tertutup yang saya gunakan
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
Namun, bahkan Negara bagian 'Terbuka' gagal pada pemeriksaan ini.
Jawaban:
Anda harus menggunakan SqlConnection.State
misalnya,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
jawabannya, IMHO. Saya lupa namespace ini (had using System.Data.SqlClient
) dan tidak tahu cara mendapatkannya ConnectionState
sebagai kata kunci sampai saya menambahkannya. Semoga ini bisa membantu seseorang.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? Dengan cara ini jika koneksi adalah null, itu juga "ditutup".
Inilah yang saya gunakan:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Alasan saya tidak hanya menggunakan:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Apakah karena ConnectionState juga bisa:
Broken, Connnecting, Executing, Fetching
Sebagai tambahannya
Open, Closed
Selain itu Microsoft menyatakan bahwa Menutup, dan kemudian membuka kembali koneksi "akan menyegarkan nilai Status." Lihat di sini http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
untuk menghindari penyetelan ulang dengan koneksi yang lambat, bukan?
Dokumentasi NET mengatakan: Properti Negara: Kombinasi bitwise dari nilai-nilai ConnectionState
Jadi saya pikir Anda harus memeriksanya
!myConnection.State.HasFlag(ConnectionState.Open)
dari pada
myConnection.State != ConnectionState.Open
karena Negara dapat memiliki banyak bendera.
Periksa apakah koneksi MySQL terbuka
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? letakkan di akhir metode, di luar if
/ else
!
Anda juga bisa menggunakan ini
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
untuk siapa pun yang tidak tahu, atau tidak tahu mengapa itu tidak berhasil
Kode ini sedikit lebih defensif, sebelum membuka koneksi, periksa status. Jika status koneksi Rusak maka kita harus mencoba menutupnya. Rusak berarti koneksi sebelumnya dibuka dan tidak berfungsi dengan benar. Kondisi kedua menentukan bahwa status koneksi harus ditutup sebelum mencoba membukanya lagi sehingga kode dapat dipanggil berulang kali.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Untuk memeriksa status koneksi database, Anda cukup melakukan hal berikut ini
if(con.State == ConnectionState.Open){}
Untuk memeriksa Status OleDbConnection gunakan ini:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
mengembalikan ConnectionState
public override ConnectionState State { get; }
Berikut adalah ConnectionState
enum lainnya
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
}
Saya menggunakan cara berikut sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
tidak ada; yang Anda maksud ConnectionState.Open
?
SqlConnectionState
enum sebagai enum dan bukan mengubahnya menjadi string .....