【问题标题】:Closing SQLiteConnection (SQLiteConnectionWithLock)关闭 SQLiteConnection (SQLiteConnectionWithLock)
【发布时间】:2014-07-25 08:10:38
【问题描述】:

我在我的应用程序中使用SQLite.NET PCL library

使用库管理连接生命周期的最佳做法是什么?

我找不到任何使用 SQLiteConnection.Close() 方法的示例。但常见的 .NET 做法是在每个请求或大量请求后关闭连接。那么我应该为应用程序创建一个连接并且从不释放它吗?

【问题讨论】:

    标签: c# sqlite portable-class-library sqlite-net


    【解决方案1】:

    我个人将我的 db 操作包装到 using 语句中,该语句将为我处理 SqlConnection

    using (var conn = SqlConnection())
    {
        //SQL stuff here
    }
    

    这将使Close() 在最后一个} 之后调用,sqlite-net 以这种方式实现:

    protected virtual void Dispose(bool disposing)
    {
        Close();
    }
    

    【讨论】:

    • 该答案特定于 ADO.NET Connections 并且不适用于特定问题。这如何特别适用于 SQLite.NET PCL 库?我的理解是,当您创建 SQLite.Net.SQLiteConnection 时,您必须使用该数据库的所有表类调用其 CreateTable 方法。由于 CreateTable 要求,每次创建连接以使用 using 语句时,这会产生很多开销。我不确定对于问题所涉及的 SQLite.NET PCL 库以及其中引用的特定类 SQLiteConnection 是否是“最佳实践”。
    • @RodneyFoley 很好的评论。您能提供用于 SQLite.NET PCL 的方法的答案吗?
    • @alexey 问题的关键是我没有一个好的方法,当时也没有记录。由于一些问题,我已经不再使用 SQLite.NET PCL。由于它应该是某种微观形式,因此它似乎通常避免了 IDisposable 模式的概念,您必须“相信”他们正确及时地处理连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多