我们需要关闭SQLite连接时退出WP应用程序

本文关键字:退出 WP 应用程序 连接 SQLite 我们 | 更新日期: 2023-09-27 17:50:44

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

如果我们要关闭连接(Dispose(),因为我没有看到close函数),我们在哪里关闭?在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)
            {
            }
        }
    }

在任何地方(在其他文件中)我需要a来访问这个连接,更新表或插入。我通过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{}

我们需要关闭SQLite连接时退出WP应用程序

一般规则是始终在IDisposalbe对象上调用Dispose()方法。所以,是的,你应该关闭它。下一个问题是在哪里。有两种方法。首先,using指令用于临时本地连接,例如:

using(SqlConnection connection = new SqlConnection("ConnectionString"))
{
    // some code here
}

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

class Repository : IDisposable
{
    SqlConnection connection = new SqlConnection("ConnectionString");
    void Dispose()
    {
        connection.Dispose();
    }
}

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

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

一般规则是:如果一个对象实现了IDisposable,你应该Dispose它或者使用using

using(SQLiteConnection conn = new SQLiteConnection("<ConnectionString>"))
{
...
}

只有少数例外情况(如数据集和数据表)。

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

如果您使用using,则不必问此问题,因为它将自动被处置。

如果您不使用using,那么在大多数情况下存储连接并重用它不是一个好主意(除非您喜欢错误),因此答案将是"尽快"。

EDIT(以下OP)

这就是我在App.xaml.cs

中打开连接的方式
  1. 你不希望在视图中有任何与DB连接相关的东西。
  2. 根据您提供的样品,我看不出这样做有什么好处。你可以每次都打开连接。
  3. 如果您担心打开X个连接,那么请查看以下MSDN文章。这是关于SqlConnections,但概念是相同的SQLiteConnections。