我有一个带有Access 2016前端的ODBC9.5数据库,使用PostgreSQL驱动程序将两者连接起来。如果我想查询数据,我会从以下命令开始:
Dim conn As New ADODB.Connection
conn.Open "Driver={PostgreSQL ANSI};Server=localhost;Database=[name];User Id=[UID];Password=[pass];"
Dim cmd As New ADODB.Command
cmd.ActiveConnection = conn
我的问题是:为什么我不应该在应用程序打开时建立这个连接,在我需要运行查询时使用这个连接,而不是每次运行查询时打开和关闭连接?
我不确定在Access中建立这样的连接所涉及的开销(如果有的话),并且我一直无法找到有关该主题的任何信息。如果这是一个天真的问题,很抱歉。
发布于 2018-09-20 07:15:14
无论如何,连接都会被Access缓存。
一旦您触摸或打开任何链接表,则该连接现在处于活动状态,并由Access重新使用。
通常,如果查询是针对单个表的,那么就没有理由不针对链接表进行编码。
例如:
Dim rst As DAO.Recordset
Dim strSQL As String
strSQL = "select * from tblInvoices where invoiceNum = 13355"
Set rst = CurrentDb.OpenRecordset(strSQL)
如果您使用直通查询,则可以很好地执行以下操作:
Sub Test555()
Dim rst As DAO.Recordset
With CurrentDb.QueryDefs("qryPass")
.SQL = "select * from tblInvoices where invoiceNum = 13355"
Set rst = .OpenRecordset
End With
End Sub
这样做的原因是你不需要在你的代码中弄乱或者麻烦使用连接字符串。
只需确保您的表重新链接代码也重新链接任何直通查询。
https://stackoverflow.com/questions/52415106
复制相似问题