Làm cách nào để bạn kiểm tra xem nó đang mở hay đóng mà tôi đang sử dụng
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
tuy nhiên, ngay cả khi Trạng thái là 'Mở' nó không thành công trong lần kiểm tra này.
Làm cách nào để bạn kiểm tra xem nó đang mở hay đóng mà tôi đang sử dụng
if (SQLOperator.SQLCONNECTION.State.Equals("Open"))
tuy nhiên, ngay cả khi Trạng thái là 'Mở' nó không thành công trong lần kiểm tra này.
Câu trả lời:
Bạn nên sử dụng SqlConnection.State
ví dụ,
using System.Data;
if (myConnection != null && myConnection.State == ConnectionState.Closed)
{
// do something
// ...
}
using System.Data;
vào câu trả lời, IMHO. Tôi đã quên không gian tên này (đã có using System.Data.SqlClient
) và không thể tìm ra cách lấy ConnectionState
làm từ khóa cho đến khi tôi thêm nó. Hy vọng điều này sẽ giúp ai đó.
if (myConnection == null || myConnection.State == ConnectionState.Closed) { //Connection is closed } else { //Connection is open in some way }
? Bằng cách này nếu kết nối vô hiệu, nó cũng "đóng".
Đây là những gì tôi đang sử dụng:
if (mySQLConnection.State != ConnectionState.Open)
{
mySQLConnection.Close();
mySQLConnection.Open();
}
Lý do tôi không chỉ đơn giản là sử dụng:
if (mySQLConnection.State == ConnectionState.Closed)
{
mySQLConnection.Open();
}
Là bởi vì ConnectionState cũng có thể là:
Broken, Connnecting, Executing, Fetching
Ngoài
Open, Closed
Ngoài ra, Microsoft tuyên bố rằng Đóng và sau đó Mở lại kết nối "sẽ làm mới giá trị của Trạng thái." Xem tại đây http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.state(v=vs.110).aspx
mySQLConnection.State != ConnectionState.Open && mySQLConnection.State != ConnectionState.Connecting
để tránh việc đặt lại với kết nối chậm phải không?
Tài liệu .NET cho biết: Thuộc tính trạng thái: Sự kết hợp theo từng bit của các giá trị ConnectionState
Vì vậy, tôi nghĩ bạn nên kiểm tra
!myConnection.State.HasFlag(ConnectionState.Open)
thay vì
myConnection.State != ConnectionState.Open
bởi vì State có thể có nhiều cờ.
Kiểm tra xem kết nối MySQL có đang mở không
ConnectionState state = connection.State;
if (state == ConnectionState.Open)
{
return true;
}
else
{
connection.Open();
return true;
}
return true;
? đặt nó ở cuối phương thức, bên ngoài dấu if
/ else
!
bạn cũng có thể sử dụng cái này
if (SQLCON.State == ConnectionState.Closed)
{
SQLCON.Open();
}
using System.Data;
cho bất kỳ ai không biết hoặc không biết tại sao nó không hoạt động
Mã này phòng thủ hơn một chút, trước khi mở kết nối, hãy kiểm tra trạng thái. Nếu trạng thái kết nối bị hỏng thì chúng ta nên cố gắng đóng nó lại. Bị hỏng có nghĩa là kết nối đã được mở trước đó và không hoạt động chính xác. Điều kiện thứ hai xác định rằng trạng thái kết nối phải được đóng trước khi cố gắng mở lại để mã có thể được gọi nhiều lần.
// Defensive database opening logic.
if (_databaseConnection.State == ConnectionState.Broken) {
_databaseConnection.Close();
}
if (_databaseConnection.State == ConnectionState.Closed) {
_databaseConnection.Open();
}
Để kiểm tra trạng thái kết nối cơ sở dữ liệu, bạn chỉ cần làm như sau
if(con.State == ConnectionState.Open){}
Để kiểm tra OleDbConnection State, hãy sử dụng cái này:
if (oconn.State == ConnectionState.Open)
{
oconn.Close();
}
State
trả lại ConnectionState
public override ConnectionState State { get; }
Đây là các ConnectionState
enum khác
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
}
Tôi sử dụng cách sau sqlconnection.state
if(conexion.state != connectionState.open())
conexion.open();
connectionState.open()
không tồn tại; bạn đã có nghĩa là ConnectionState.Open
?
SqlConnectionState
enum như một enum và không biến nó thành một chuỗi .....