我们需要关闭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{}
一般规则是始终在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
中打开连接的方式
- 你不希望在视图中有任何与DB连接相关的东西。 根据您提供的样品,我看不出这样做有什么好处。你可以每次都打开连接。
- 如果您担心打开X个连接,那么请查看以下MSDN文章。这是关于SqlConnections,但概念是相同的SQLiteConnections。