SQLite,是否打开一个永久连接?

use*_*403 5 vb.net sqlite

我一直认为最好使用和关闭数据库连接。但是对于 SQLite,我不确定这是否适用。我使用 Using Connection 语句执行所有查询。所以我的理解是我打开一个连接然后关闭它这样做。当谈到 SQLite 和最佳使用时,是在程序使用期间打开一个永久连接还是继续使用我目前使用的方法更好。

我正在将数据库用于 VB.net windows 程序,该程序具有大约 2gig 的相当大的 DB。

我目前的连接方法示例

  Using oMainQueryR As New SQLite.SQLiteCommand
            oMainQueryR.CommandText = ("SELECT * FROM CRD")
            Using connection As New SQLite.SQLiteConnection(conectionString)
                Using oDataSQL As New SQLite.SQLiteDataAdapter
                    oMainQueryR.Connection = connection
                    oDataSQL.SelectCommand = oMainQueryR
                    connection.Open()
                    oDataSQL.FillSchema(crd, SchemaType.Source)
                    oDataSQL.Fill(crd)
                    connection.Close()
                End Using
            End Using
    End Using
Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 1

与所有数据库一样,这取决于情况。在 sqlite 的这种特定情况下,您需要查看两个“依赖项”:

  1. 您是数据库的唯一用户吗?
  2. 隐式事务何时提交?

对于第一项,如果数据库有其他用户,或者可能有多个进程同时访问您的 sqlite 数据库文件,您可能希望频繁打开/关闭不同的连接。

对于第二项,我不确定 sqlite 的具体行为如何。某些数据库引擎在连接关闭之前不会提交隐式事务。如果 sqlite 就是这种情况,您可能需要更频繁地关闭连接。

.Net 中的连接应该是短暂的这一想法主要适用于 Microsoft Sql Server,因为 Sql Server 的 .Net 提供程序也能够利用称为连接池的功能。在 Sql Server 之外,这个建议并非完全没有优点,但也不是既定的。