PostgreSQL&;访问--开始时连接与需要时连接
我有一个带有Access 2016前端的PostgreSQL 9.5数据库,使用ODBC驱动程序将两者连接起来。如果我想查询数据,我将从以下命令开始:PostgreSQL&;访问--开始时连接与需要时连接,sql,postgresql,ms-access,Sql,Postgresql,Ms Access,我有一个带有Access 2016前端的PostgreSQL 9.5数据库,使用ODBC驱动程序将两者连接起来。如果我想查询数据,我将从以下命令开始: 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.Active
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中建立这样的连接需要多少开销(如果有的话),我也找不到关于这个主题的任何信息。如果这是一个天真的问题,我道歉 I无论如何,连接都是由Access缓存的 触摸或打开任何链接表后,该连接现在处于活动状态,可供Access重新使用 通常,如果查询针对单个表,那么就没有理由不针对链接表进行编码 例如: 如果您使用传递查询,那么这很有效:
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
上面提到的原因是,这样您就不会弄乱代码中的连接字符串,也不必费心处理这些字符串
只需确保表重新链接代码也重新链接任何传递查询 连接到数据库时会有开销,但您连接到的是本地实例,因此开销可能非常小。或者,如果您的连接在一段时间内处于空闲状态,它可能会超时-这将取决于数据库配置。@Nicarus值得一提的是,此项目的最终版本将在本地网络上托管数据库,开销是否也会同样小?谢谢你的洞察力,虽然我不能告诉你,但你可以测试一下。我怀疑这取决于它尝试连接时您有多少并发网络流量。如果您对此感到担忧,可以在开始时建立连接,并且在需要执行查询/命令时,首先检查连接是否仍然处于活动状态。如果没有,请重新连接。您是在谈论链接表还是ADODB连接?后者在您需要时更容易建立,但如果您想缓存连接,可以使用预先声明的自愈对象。这大大简化了事情,感谢您简洁的回答!
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