由於未正確關閉連接,導致內存泄漏。這是由於使用全局函數來訪問數據庫(使用不同的SQL字符串),但我傳回了一個sqldatareader。 我無法關閉此方法,也無法連接到數據庫,因爲它關閉了對數據的訪問!它不能從此方法之外正確關閉。 :(C#如何使我的sqlDataReader脫機?
反正是有辦法,我可以把所需的表,該SqlDataReader的授權訪問,離線。所以,我可以關閉所有的連接,但仍然可以訪問表。
注意,不同的表返回等不同領域的存在。我不想每次都我嘗試複製代碼,並連接。
private SqlDataReader OpenDataStream(String sql)
{
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = new SqlConnection();
sqlComm.Connection.ConnectionString = @"Myconnectionstring";
sqlComm.CommandText = sql;
sqlComm.Connection.Open();
SqlDataReader data = null;
data = sqlComm.ExecuteReader();
return data;
// Closing data here, or connection, results in returned object inaccessable.
}
或者可能關閉了這一切的方法之外(我已訪問後的一個有效的工作方式是什麼我需要)?
[使用語句中的DataLayer返回DataReader]的可能重複(http://stackoverflow.com/questions/850065/return-datareader-from-datalayer-in-using-statement) – nawfal