c# - 如何在不使用 .NET 显式调用 Close 方法的情况下关闭 Sqlite 连接

标签 c# .net sqlite database-connection system.data.sqlite

我正在 winform 中创建将使用 Sqlite 数据库的桌面应用程序。

所以我创建了使用 System.Data.SQLite 的 Sqlite Helper 类,并且该 Helper 类的每个方法都会打开和关闭连接。

但现在我还添加了附加数据库的功能,但在连接关闭后,所有附加的数据库都会丢失。

为了纠正这个问题,我修改了类,以便连接在构造函数中打开并保持打开状态。

应用程序结束后,我希望在不显式调用 Close 方法的情况下关闭该连接。

有什么建议吗?

最佳答案

在您的应用程序的生命周期内保持连接打开不是一个好方法。
我建议不要走这条路。
相反,我会尝试将附加数据库的功能封装在一个可以根据需要使用的方法中调用。

例如:

private static void AttachDB(string fileDB, string aliasName, SQLiteConnection cn) 
{ 
    string sqlText = string.Format("ATTACH '{0}' AS {1}", fileDB, aliasName) 
    SQLiteCommand cmd = new SQLiteCommand(sqlText, cn) 
    cmd.ExecuteNonQuery(); 
} 

然后在你的代码中

using(SQLiteConnection cn = new SQLiteConnection(GetConnectionString()))
{
     AttachDB(@"C:\SQLite\UserData.sqlite3", "UserData", cn);
     // Do your code here
} 

关于c# - 如何在不使用 .NET 显式调用 Close 方法的情况下关闭 Sqlite 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460207/

相关文章:

c# - 如何安排在我的 MVC 网络应用程序中自动运行 Controller ?

c# - Protobuf-Net 的实现可以击败我目前拥有的吗?

c# - 过程或函数 Event_Update 指定的参数太多

c# - 如何更改时间选择器的突出显示背景?

c# - 使用 linq to sql 将列表附加到数据库

javascript - 使用 JavaScript 进行 SQLite SELECT

c# - WPF Canvas 项和 DataTemplate

c# - .NET 4.7 xunit 测试项目在引用 .NET Standard 1.6 项目时无法构建

sqlite - 在google colab中加载和使用sqlite文件

c - 使用 sqlite3 将某些数据分配给结构