退出WP应用程序时是否需要关闭SQLite连接?

alf*_*fah 0 c# sqlite windows-phone-8 win-universal-app

App.xaml.cs我的通用应用程序中,我打开了一个SQLConnection.我没有关闭连接.到目前为止它并没有给我带来麻烦.但这是正确的方式吗,我们可以这样离开吗?

如果我们要关闭连接(Dispose()因为我没有看到关闭函数)我们在哪里关闭?在App_Closing

编辑

这就是我在App.xaml.cs中打开连接的方式

public static SQLiteConnection conn;
public void LoadDatabase()
    {
        conn = new SQLiteConnection( "JusWriteDB.db");

        string sql = @"CREATE TABLE IF NOT EXISTS Folder (FolderCompletedStatus INTEGER, FolderPriority INTEGER, PenColor INTEGER,                                                         FolderText TEXT, FolderUUID TEXT PRIMARY KEY NOT NULL );";
        using (var statement = conn.Prepare(sql))
        {
            try
            {
                statement.Step();
            }
            catch(Exception)
            {

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

而且(在某些其他文件中)我需要访问此连接,更新表或插入.我通过App.xaml.cs中定义的公共变量访问它

 var db = App.conn;
 string sql = "SELECT * from Folder Where FolderSyncStatus = 'Del'; ";
 try
    {
      using (var statement = db.Prepare(sql))
      {
         while (statement.Step() == SQLiteResult.ROW)
         { //  code 
         }
      }
    }
  catch{}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nda 5

一般规则是始终Dispose()IDisposalbe对象上调用方法.是的,你应该关闭它.接下来的问题是在哪里.有两种方法可以做到这一点.首先 - 使用using指令进行临时本地连接,例如:

using(SqlConnection connection = new SqlConnection("ConnectionString"))
{
    // some code here
}
Run Code Online (Sandbox Code Playgroud)

但似乎您在字段中存储对连接的引用.在这种情况下,具有此字段的类应该在其自己的方法中实现IDisposable和调用:connection.Dispose()Dispose

class Repository : IDisposable
{
    SqlConnection connection = new SqlConnection("ConnectionString");

    void Dispose()
    {
        connection.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

但无论如何你需要using在这里,唯一的区别 - using你将创造Repository而不是SqlConnection