0
我將sqlliteconnection對象分配給靜態變量並在函數中初始化它。爲什麼分配給靜態變量的sqlliteconnection被處置?
在某些情況下訪問sqlliteconnection對象時,它會拋出「sqlconnection object is disposed」異常。據我所知,靜態變量只有在應用程序關閉時纔會處理。
示例代碼:
public static SQLLiteConnection sql;
public void OpenConnection()
{
sql = new SQLLiteConnection ;
//assign sql lite file path
sql.Open();
}
public void GetStud()
{
OpenConnection();
//writing sqlcommand connection
}
}
感謝您的寶貴迴應。我可否知道靜態數據庫連接爲什麼不是最好的想法,至於我知道GC只清除未使用的對象。但我每次使用sqlconnection時都會初始化它,那麼GC如何將它視爲未使用的對象。雅我知道使用關鍵字是很好的。但是現在我無法改變整個應用程序。 –
當它是靜態的時候,如果你通過更多的線程訪問它,事情將變得非常複雜。底層連接也有一些開銷。而當數據讀取器等其他非靜態對象引用此靜態字段時,GC可能不會收集該實例。在那裏它會出現一個你不想處理的問題的全新水平(噩夢難度):D –