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

时间:2013-01-18 21:23:26

标签: vb.net sqlite

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

我使用的数据库是一个VB.net的Windows程序,其数据库大约为2gig。

我目前的连接示例方法

  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

3 个答案:

答案 0 :(得分:1)

如果它是仅由一个用户使用的本地应用程序,我认为在应用程序的生命周期内保持一个连接打开是可以的。

答案 1 :(得分:1)

我认为对于大多数数据库而言,“最佳使用和关闭”的想法来自于通过确保只需要打开最少数量的连接来节省内存。

实际上,打开连接可能会产生大量开销,应该在需要时完成。这就是托管服务器基础结构(weblogic等)促进连接池使用的原因。通过这种方式,您可以在任何给定时间使用N个连接。你永远不会“浪费”资源,但你也没有责任在全球范围内管理它们。

答案 2 :(得分:1)

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

  1. 您是数据库的唯一用户吗?
  2. 何时提交隐式事务?
  3. 对于第一项,如果存在数据库的其他用户,或者如果可能的话,多个进程将同时访问您的sqlite数据库文件,则可能需要经常打开/关闭不同的连接。

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

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