PostgreSQL & Access - подключение при запуске и подключение при необходимости - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть база данных PostgreSQL 9.5 с внешним интерфейсом Access 2016, использующая драйвер 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.ActiveConnection = conn

У меня такой вопрос: есть ли причина, по которой я не должен устанавливать это соединение в тот момент, когда приложение открывается, используя это соединение?всякий раз, когда мне нужно выполнить запрос, в отличие от открытия и закрытия соединения каждый раз, когда я запускаю запрос?

Я не уверен, какие накладные расходы, если таковые имеются, связаны с установлением такого соединения в Access, и я не смог найти какую-либо информацию по этой теме.Извиняюсь, если это наивный вопрос.

1 Ответ

0 голосов
/ 20 сентября 2018

I соединение кэшируется 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

Причина вышеизложенного заключается в том, что вы, таким образом, не связываетесь со строками соединения в своем коде и не должны беспокоиться о них.

Просто убедитесь, что вы также перебираете код ссылкиповторно связывает любой сквозной запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...