我一直认为最好使用和关闭数据库连接。但是对于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
答案 0 :(得分:1)
如果它是仅由一个用户使用的本地应用程序,我认为在应用程序的生命周期内保持一个连接打开是可以的。
答案 1 :(得分:1)
我认为对于大多数数据库而言,“最佳使用和关闭”的想法来自于通过确保只需要打开最少数量的连接来节省内存。
实际上,打开连接可能会产生大量开销,应该在需要时完成。这就是托管服务器基础结构(weblogic等)促进连接池使用的原因。通过这种方式,您可以在任何给定时间使用N
个连接。你永远不会“浪费”资源,但你也没有责任在全球范围内管理它们。
答案 2 :(得分:1)
与所有数据库一样,它取决于。在这个sqlite的特定情况下,你需要看两个“依赖”:
对于第一项,如果存在数据库的其他用户,或者如果可能的话,多个进程将同时访问您的sqlite数据库文件,则可能需要经常打开/关闭不同的连接。
对于第二项,我不确定sqlite的具体行为。在连接关闭之前,某些数据库引擎不提交隐式事务。如果是sqlite的情况,您可能希望更频繁地关闭连接。
连接应该在.Net中短暂存在的想法主要适用于Microsoft Sql Server,因为Sql Server的.Net提供程序也能够利用称为连接池的功能。在Sql Server之外,这个建议并非完全没有价值,但它并不是特定的。