![](/img/trans.png)
[英]Do Mysql close the connection in 6.3.6 when I disposed the connection in c# (Mysqlconnection)
[英]C# SQL when/how do I close the connection?
我正在使用此代碼:
public class SQLConnection : IConnection
{
private SqlConnection _sqlConnection = null;
//bunch of interface implementations for my project
//the destructor
~SQLConnection()
{
if(_sqlConnection != null)
{
if(_sqlConnection.State == ConnectionState.Open)
{
_sqlConnection.Close();
}
_sqlConnection.Dispose();
}
}
}
直到前一段時間,當我開始收到此錯誤時,它一直運行良好: 內部.Net Framework數據提供程序錯誤1
仔細搜索之后,我發現了此鏈接 (“警告”部分),我認為這就是我正在發生的事情。 我的班級每次都在管理連接狀態的打開和關閉,但是現在看來我無法用這種方式進行管理,還有其他方法可以做到這一點,而不必轉到使用該連接的每個函數,並且顯式地調用connection.Close()
嗎?
始終使用“使用”來安全處置連接。
using(var _sqlConnection = new SqlConnection())
{
//code here
_sqlConnection.Open();
}
//Safely disposed.
另外,除非您擁有非托管代碼,否則在C#代碼中顯式使用析構函數絕不是一個好主意。
當一個代碼嘗試訪問已被垃圾回收的SQLConnection時,您可能會收到此錯誤。 這種情況通常會發生在這種情況下
SqlConnection sqlConn;
using (var sqlConnection = new SqlConnection())
{
sqlConn = sqlConnection;
sqlConnection.Open();
}
sqlConn.Close();
我知道這個示例由於過於簡化而顯得很愚蠢,但是它經常發生在程序員傾向於在管理類之間共享連接對象時。 查找您的代碼中最近的更改。 也許您正在傳遞多個對象之間的連接實例。 這些對象之一將被回收,然后連接也將被丟棄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.