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

时间:2015-12-13 07:09:10

标签: c# sqlite static-members

我将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
}
}

1 个答案:

答案 0 :(得分:0)

即使在静态对象上也可以调用Dispose()。它的目的是释放非托管资源(托管资源由GC自动释放)。仅在关闭应用程序后才会调用Dispose。只要没有对此对象的引用,它就会自动从finalizer方法(由GC调用)自动调用。它也会在使用块结束时调用。

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

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