Delphi. FireDac. Виды соединений и ConnectionDefinition

ConnectionDefinition

Что такое ConnectionDefinition?

Перед тем как создать соединение в FireDac, необходимо создать так называемое ConnectionDefinition – определение соединения. Это набор параметров – сервер, пользователь, пароль и др. параметры, которые, впоследствии используются для установки соединения.

В FireDac существует как минимум 3 вида ConnectionDefinition. Подробно об этом написано в документации.

Постоянное ConnectionDefinition (Persistent)

Имеет уникальное имя. Настраивается из FDManager и хранится в ini файле. Определяется один раз, далее может использоваться всеми соединениями и приложениями. Файл, в котором хранятся определения, находится по адресу

C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini

Опасность здесь заключается в том, что данные относительно открыты и могут быть изменены. После обновления ConnectionDefinition через FDExplorer или FDAdministrator необходимо либо реактивировать FDManager либо перезапустить IDE.

Частное ConnectionDefinition (Private)

Имеет уникальное имя. Аналогично постоянному, но данные не хранятся во внешнем файле и поэтому могут быть использованы только в одном приложении несколько раз.

Временное ConnectionDefinition (Temporary)

Не имеет уникального имени. Не хранится во внешнем файле, не управляется через FDManager.

FDConnectionDefs.ini

Если открыть файл

C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini

то мы увидим примерно следующую картину

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

Как правильно изменить файл FDConnectionDefs.ini ?

Изменить его можно несколькими способами

-Если разобрались с параметрами, то просто вписать или изменить туда свои параметры для своего ConnectionDefinition

-Можно работать через File | DataExplorer | Fire Dac | MySQL Server –> правой кнопкой мыши Add Connection… Как ни странно, это способ прекрасно работает, хоть и не описан в официальной документации

-Можно работать через  FDExplorer или FDAdministrator

В общем, на вкус и цвет. А суть проста – мы сохраняем параметры того или иного подключения, чтобы воспользоваться ими после.

Как помочь найти приложению FDConnectionsDefs.ini?

Очень просто. Нужно добавить в приложение FDManager и прописать в свойстве FDManager.ConnectionDefFileName путь к нашему файлу FDConnectionDefs.ini

Вообще, по этому поводу в документации написана следующая информация


 

An application can specify a connection definition file name in the FDManager.ConnectionDefFileName property. FireDAC searches for a connection definition file in the following places:

  • If ConnectionDefFileName is specified:
    • search for a file name without a path, then look for it in an application EXE folder.
    • otherwise just use a specified file name.
  • If ConnectionDefFileName is not specified:
    • look for FDConnectionDefs.ini in an application EXE folder.
    • If the file above is not found, look for a file specified in the registry key HKCU\Software\da-soft\FireDAC\ConnectionDefFile. By default it is $(ADHome)\DB\ADConnectionDefs.ini.

Note: At design time, FireDAC ignores the value of the ADManager.ConnectionDefFileName, and looks for a file in a Delphi Bin folder or as specified in the registry. If the file is not found, an exception is raised.


Иными словами, лучший способ – прямо указать приложению где лежит файл через FDManager.ConnectionDefFileName, если этого не сделать, то приложение будет искать данный файл в папке EXE, и после этого будет пытаться искать через реестр

Опять же, нужно в FDManager поставить свойство ADManager.ConnectionDefFileAutoLoad в True, иначе придется явно вызывать метод ADManager.LoadConnectionDefFile до первого использования FDConnection, например до FDConnection:=true;

Практика. Создание ConnectionDefs и FDConnections

Создание Persistent ConnectionDefinition

Создадим VCL проект, на форму добавим одну кнопку и следующие компоненты

9

В uses напишем

Далее напишем вспомогательную процедуру

Далее, обработаем кнопку bConnection таким образом

Также мое приложение запросило компонент FDPhysMySQLDriverLink1, в свойстве VendorLib я напрямую указал где находится файл libmysql.dll

Результат

10

 

Создание Private Connection Definition

В этом случае можно повторить предыдущий пример, но не писать строчку

Создание Temporary Connection Definition

Здесь все просто. Если в дизайн тайм, то нужно на форму добавить FDConnection, 2 раза кликнуть на нем, заполнить параметры и нажать галочку Connected в Object inspector.

Если в run-time, то тогда можно таким образом

Основные моменты мы рассмотрели, остальное дело техники и экспериментов. Удачи в разработке !!!

This entry was posted in Delphi, FireDAC. Bookmark the permalink.