Açık mı kapalı mı kontrol ediyorsun ben kullanıyordum
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
ancak, Devlet 'Açık' olsa bile bu kontrolde başarısız olur.
Açık mı kapalı mı kontrol ediyorsun ben kullanıyordum
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
ancak, Devlet 'Açık' olsa bile bu kontrolde başarısız olur.
Yanıtlar:
SqlConnection.State kullanmalısınız
Örneğin,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
cevap, IMHO. Bu ad alanını unuttum (vardı using System.Data.SqlClient
) ve ConnectionState
ekleyene kadar anahtar kelime olarak nasıl alınacağını bulamadım . Umarım bu birine yardımcı olur.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
mı? Bu şekilde, bağlantı boşsa, aynı zamanda "kapalıdır".
İşte kullandığım şey:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Sadece kullanmama nedenim:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Bunun nedeni, ConnectionState'in ayrıca:
Broken, Connnecting, Executing, Fetching
Ek olarak
Open, Closed
Ayrıca Microsoft, Kapatmanın ve ardından bağlantıyı yeniden açmanın "Durum değerini yenileyeceğini" belirtir. Buraya bakın http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
Yavaş bağlantılarla sıfırlamaları önlemek için test etmelisiniz, değil mi?
.NET belgeleri şunu söylüyor: Durum Özelliği: ConnectionState değerlerinin bit düzeyinde bir kombinasyonu
Bu yüzden kontrol etmen gerektiğini düşünüyorum
!myConnection.State.HasFlag(ConnectionState.Open)
onun yerine
myConnection.State != ConnectionState.Open
çünkü Eyalet birden fazla bayrağa sahip olabilir.
MySQL bağlantısının açık olup olmadığını kontrol edin
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? bunu yöntemin sonuna, if
/ else
!
bunu da kullanabilirsin
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
bilmeyen veya neden çalışmadığını bilmeyenler için
Bu kod biraz daha savunmacıdır, bir bağlantıyı açmadan önce durumu kontrol edin. Bağlantı durumu Bozuk ise kapatmaya çalışmalıyız. Bozuk, bağlantının daha önce açıldığı ve düzgün çalışmadığı anlamına gelir. İkinci koşul, kodun tekrar tekrar çağrılabilmesi için yeniden açmaya çalışmadan önce bağlantı durumunun kapatılması gerektiğini belirler.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Veritabanı bağlantı durumunu kontrol etmek için aşağıdakileri yapmanız yeterlidir
if(con.State == ConnectionState.Open){}
OleDbConnection Durumunu kontrol etmek için şunu kullanın:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
geri dönmek ConnectionState
public override ConnectionState State { get; }
İşte diğer ConnectionState
numaralandırma
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
}
Ben şu şekilde kullanıyorum sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
yok; bunu mu demek istediniz ConnectionState.Open
?
SqlConnectionState
numaralandırmayı bir sıralama olarak kullanın ve bir dizeye dönüştürmeyin .....