FireDAC. Dynamic PrivateConnection. Редактирование параметров

Продолжаем работать с FireDAC. В данной статье попробуем установить private соединение с БД динамически и дать возможность изменять параметры на ходу. Вот какая программа у нас получится.

9

В левой части у нас Memo, которое отражает параметры ConnectionDefs. О том, что такое ConnectionDefs, я писал в предыдущем посте. Можно эти параметры редактировать и нажимать на SaveParams, для того, чтобы изменения параметров затронули соответствующее определение соединения — ConnectionDef.

Мы научимся создавать Private соединение динамически и изменять его параметры также динамически. И в принципе, разберемся с основными моментами по PrivateConnection в FireDAC.

Начали!

Создадим VCL приложение

10

Файл FDDrivers.ini

Найдем файл FDDrivers.ini в следующей директории

Откомпилируем наш проект и рядом с EXE файлом положим файл FDDrivers.ini

11

Откроем файл FDDrivers.ini и напишем в нём следующее

12

Это описание нашего драйвера и путь к нему, соответственно, у себя пропишите свои данные. Обратите внимание, я подписал [MySQL23], можно было и [MySQL24] и [AnyName], суть здесь в том, что это так называемый «виртуальный драйвер» — удобно, например, когда у нас драйвера для 32 битной системы и 64 битной, можно например подписать [MySQL_32bit], а другой сделать [MySQL_64bit].


Примечание

Можно и в любое другое место положить этот файл, но тогда нужно будет явно указать в компоненте FDManager, где этот файл лежит вот таким образом


Файл FDConnectionDefs.ini

В данном случае не нужен, так как все определения каждый раз создаются и хранятся в памяти.

Но, на всякий случай, по умолчанию его можно найти вот здесь…

Но он нам не нужен для Private соединения. Он используется для Persistent и хранит данные на подключение в открытом виде, что в теории — уязвимо и подходит, на мой взгляд для серверных программ.


В секции uses

Первоначальное состояние

Но для создания FDConnection, FDManager, FD,FDPhysMySQLDriverLink нам нужны соответствующие юниты — их легко можно получить — добавив их для начала визуально на форму, а потом удалив, в результате, раздел uses получается таким…


Примечание

FDPhysMySQLDriverLink мы нигде не используем в данной программе, в принципе этот компонент можно удалить из программы. Но это запасной способ — показать библиотеке FireDAC, где у нас находится файл mysqllib.dll, если им пользоваться, нужно прописать в свойстве VendorLib — путь до библиотеки, например так….


Нужное состояние uses


Примечание

Также, обратите внимание, я добавил сюда модуль System.IOUtils, который можно использовать для универсального задания путей через TPath, например так…

Но этот код я не буду использовать так как мы изначально положили FDDrivers.ini рядом c EXE, и, судя по тому, что программа работает, FireDAC сам находит этот файл. В реальном же проекте да, наверное стоит перестраховаться и прописать путь до файла напрямую как это я показал выше.


Глобальные переменные

Вспомогательные функции и процедуры

Проверка на существование определения соединения ConnectionDef

Создание своего определения соединения

Обновление списка определений соединения в Combobox

Отображение параметров в memo


Основная часть программы

FormCreate

Удалением компонент я нигде на занимался, возможно зря. Но, насколько я знаю, если мы пишем владельца компонента, то вместе с уничтожением владельца — уничтожаются и все его «дети». Поэтому, теоретически удаление компонентов должно произойти в момент закрытия формы.

Кнопка Connect

Кнопка Disconnect

Кнопка SaveParams

Тестируем программу

Соединяемся

9

 

Разъединяемся

14

 

Изменяем параметры

16

 

17

Ну и естественно получаем сообщение об ошибке при соединении с неправильным логином.

18