Delphi. FireDac. Работа с драйверами БД

Известно, что большинство производителей баз данных выпускают к ним драйвера, которые и помогают нашим приложениям работать быстро и правильно. Я, например, работаю с базой MySQL, и для 32 разрядных приложений существует драйвер libmysql.dll О том как его подключить, используя компоненты доступа к БД FireDAC мы и поговорим в данное статье.

За основу статьи, я взял официальную документацию

-Старая версия

-Новая версия

Старая версия мне нравится больше тем, что там удобное, раскрывающееся дерево с левой стороны, а новая версия хороша тем, что там практически весь код корректен. В старой версии использованы аббревиатуры AD, что означает AnyDAC, а в новой версии использованы аббревиатуры FD, что означает FireDAC.

Как подключить драйвер к нашему приложению?

Существует 2 способа

– через файл FDDrivers.ini

– через компонент TFDPhysXxxDriverLink

В данной статье мы рассмотрим оба способа.

Как подключить драйвер через FDDrivers.ini ?

Для начала посмотрим, где находится этот самый файл. По умолчанию, при установке Delphi он находится в директории

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

Когда я его открыл, он был у меня практически пустым и состоял всего из 2 строк

[FDDrivers.ini]
Encoding=UTF8

Теперь узнаем что позволяет сделать FDDrivers.ini?

-настроить параметры базового драйвера (для всех описаний драйверов обязательна секция BaseDriverID, например BaseDriverID=MySQL)

-настроить так называемые виртуальные драйвера для того, чтобы, например, в одном и том же приложении использовать возможность подключаться к разным версиям сервера БД, для того, чтобы дать понять FireDAC, что у нас виртуальный драйвер, нам надо саму секцию назвать с какой-нибудь добавкой, например, таким образом

Обратите внимание, мы подписали секцию [MySQL_Virtual], если бы мы оставили [MySQL], то FireDAC не стал бы регистрировать новое описание драйверов.

Базовые и виртуальные драйвера

Базовый драйвер – это то, что уже заложено в FireDAC, базовые драйвера можно просмотреть, например из выпадающего списка компонента FDConnection. Создадим VCL приложение, добавим на него компонент FDConnection, кликнем по нему 2 раза и у нас появится окно редактирования соединения. Далее, кликнем на выпадающий список, напротив DriverID

11

 

Виртуальный драйвер в этом списке отсутствует, но мы можем добавить его в файле FDDrivers.ini “ручками”, прописав туда следующий код.

 

Далее, чтобы воспользоваться услугами этого драйвера, нам нужно в компоненте FDManager прописать свойство DriverDefFileName и поставить DriverDefFileAutoLoad в True. После этого, например, при создании ConnectionDefinition, мы можем, например указать, в свойстве DriverID свойство MySQL_Virtual

То есть, код мог бы быть таким…

А само подключение обработать таким образом

Зачем нужны виртуальные драйвера?

-работать с различными версиями DBMS (DataBase Management System) в разных соединениях (FDConnections), думаю, можно работать одновременно даже с разными БД в разных соединениях

-настраивать параметры драйверов, например параметры MySQL Embedded

Как подключить драйвер через TFDPhysXxxDriverLink ?

Здесь все достаточно просто, нужно добавить компонент TFDPhysXxxDriverLink на форму и настроить следующие свойства

VendorLib, например C:\MySQLDriver\libmysql.dll

VendorHome это директория, в которую установлен сервер, например C:\Program Files\MySQL\MySQL Server 5.5

Если прописать VendorHome, то FireDac будет сначала искать libmysql.dll в этой директории.

Обратите внимание!

У меня, например 64 разрядная версия MySQL, и драйвер, соответственно там тоже 64 разрядный, если его использовать, будет выскакивать ошибка. Поэтому я свойство VendorHome не прописывал, а только свойство Vendorlib, здесь я прописал путь к 32 разрядной версии драйверов, так как в Delphi компилировал 32 разрядное приложение.

Практика. Подключение к БД MySQL

Сначала подключимся, используя файл FDDrivers.ini Для этого создадим VCL приложение следующим образом

12

 

Теперь пропишем в файле C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDDrivers.ini следующую секцию

В FDManager пропишем пути к FDDrivers.ini и настроим DriverDefFileAutoLoad

Теперь напишем следующий код

А само подключение обработаем таким образом

Теперь пробуем подключиться

13

 

Подключение с использованием TFDPhysXxxDriverLink 

Добавим на форму компонент TFDPhysXxxDriverLink и пропишем его свойство VendorLib следующим образом

TFDPhysXxxDriverLink1.VendorLib:=’C:\MySQLDriver\libmysql.dll’;

Теперь снова пробуем подключиться и получаем тот же результат

13


Когда использовать FDDrivers.ini а когда TFDPhysXxxDriverLink ?

Думаю, в случае, когда у нас одна версия БД и не предвидится использование нескольких версий – лучше пользоваться более простым способом – TFDPhysXxxDriverLink, но если у нас очень сложное приложение, которое использует разные БД и разные версии то лучше, конечно использовать FDDrivers.ini На этом всё, думаю основные моменты мы раскрыли.

Исходники

Скачать исходники 212_FireDac_3