为什么要丢弃分配给静态变量的sqlliteconnection

本文关键字:静态 变量 sqlliteconnection 分配 为什么 | 更新日期: 2023-09-27 18:26:38

我将sqlliteconnection对象分配给静态变量,并在函数中初始化它。

在某些情况下访问sqlliteconnection对象时,它会抛出"sqlconnection对象已释放"异常。据我所知,只有在应用程序关闭时才会处理静态变量。

样本代码:

public static SQLLiteConnection sql;
public void OpenConnection()
{
     sql = new SQLLiteConnection ;
     //assign sql lite file path
     sql.Open();
}
public void GetStud()
{
  OpenConnection();
 //writing sqlcommand connection
}
}

为什么要丢弃分配给静态变量的sqlliteconnection

即使在静态对象上也可以调用Dispose()。它的目的是释放非托管资源(托管资源由GC自动释放)。Dispose不是仅在应用程序关闭后调用的。它通常是在没有引用该对象时从终结器方法(由GC调用)自动调用的。它也在使用块的末尾被调用。

无论如何,静态SqlConnection对象不是一个好主意。最好总是用"using"创建新实例。

using (var conn = new SQLLiteConnection("connectionstring"))
{
   conn.Open();
}//here is called Dispose()