Набор компонентов FireDAC впервые появился в RAD Studio XE5. За прошедшее с тех пор время он уже успел зарекомендовать себя как надёжное и функциональное средство для организации взаимодействия приложений с широким спектром СУБД. В их число входит и MySQL.
Способы подключения
Существует два способа реализовать подключение к MySQL посредством FireDAC, но все они так или иначе связаны со «стандартной» библиотекой libmysql.dll.
- Расположить библиотеку libmysql.dll в произвольной папке и прописать путь к ней в переменной окружения path или файле FDDrivers.ini;
- Использовать конфигурирование драйвера с помощью компонента FDPhysMySQLDriverLink.
Первый способ не требует привлечения дополнительных компонентов для соединения. Достаточно просто FDConnection.
В тоже время он подразумевает выполнение дополнительных действий связанных с настройкой операционной системы или использованием дополнительного конфигурационного файла. При этом в переменной path и FDDrivers.ini необходимо указывать абсолютные пути.
Всё это создаёт дополнительные сложности и ограничивает пригодность данного способа. Поэтому его применяют довольно редко и пользоваться им не рекомендуется.
Второй способ гораздо более универсальный.
Он состоит в том, что на форму, фрейм или модуль данных добавляется специальный компонент FDPhysMySQLDriverLink и в его свойстве VendorLib указывается путь к библиотеке libmysql.dll.
Также как и в предыдущем случае, необходимо указывать абсолютный путь. Однако задать его можно, как в визуальном редакторе, так и в самом коде программы. Например, так:
FDPhysMySQLDriverLink.VendorLib:='C:\libmysql.dll';
Последнее практически полностью решает проблему, связанную с использованием абсолютных путей и позволяет без особых сложностей разместить libmysql.dll в папке программы, что даёт дополнительные преимущества.
Из недостатков. Соединение с БД можно установить только после того как путь к библиотеке libmysql.dll задан. Иначе будет выдано исключение.
Важно помнить. СУБД MySQL имеет 32 и 64-разрядную версию. Их библиотеки libmysql.dll не совместимы между собой. При этом программа установки выбирает устанавливаемую версию автоматически исходя из разрядности операционной системы.Вследствие этого, независимо от выбранного способа реализации подключения, необходимо строго соблюдать разрядность.
64-разрядное приложение сможет работать только с 64-разрядной библиотекой (работа с 32-разрядной библиотекой не поддерживается и возбуждает исключение). Соответственно, 32-разрядное приложение может подключиться к MySQL только при помощи 32-разрядной библиотеки и никак иначе.
Алгоритм действий
Для первого способа (переменная path, файл FDDrivers.ini)
Создаём папку и помещаем в неё библиотеку libmysql.dll.
Прописываем абсолютный путь к ней в переменной окружения path или файле FDDrivers.ini.
Синтаксис для файла FDDrivers.ini приведён ниже.
[MySQL57] BaseDriverID=MySQL VendorLib=c:\MySQL\libmysql.dll
Настраиваем компонент FDConnection (см. ниже);
Активируем соединение:
FDConnection.Connected:=true;
Для второго способа (компонент FDPhysMySQLDriverLink)
Размещаем библиотеку libmysql.dll в любом подходящем месте (лучше всего в папке с программой);
Прописываем в свойстве VendorLib компонента FDPhysMySQLDriverLink абсолютный путь к библиотеке:
FDPhysMySQLDriverLink.VendorLib:='C:\MyProgramDirectory\libmysql.dll';
Настраиваем компонент FDConnection (см. ниже);
Активируем соединение
FDConnection.Connected:=true;
Настройка компонента FDConnection
Указываем в параметрах соединения (группа свойств Params) следующие обязательные значения:
Параметр | Значение |
DriverID | MySQL |
Password | Пароль для доступа к MySQL |
Port | Порт для работы с MySQL. По умолчанию 3306. |
Server | Имя сервера, на котором установлен MySQL. Для локального подключения localhost. |
UserName | Имя пользователя MySQL |
Наиболее частые ошибки
Не удаётся найти указанный файл
Пример:
[FireDAC][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll or libmysqld.dll]. He удается найти указанный файл.
Hint: check it is in the PATH or application EXE directories, and has x86 bitness..
Возможные причины:
- Неправильно указан путь к библиотеке libmysql.dll;
- Путь указан правильно, но библиотека libmysql.dll отсутствует.
Способы исправления:
- Указать правильный путь;
- Разместить библиотеку libmysql.dll в соответствующей папке.
Library has unsupported architecture
Пример:
[FireDAC][Phys][MySQL]-314. Cannot load vendor library [C:\Users\Erop\Documents\Embarcadero\Studio\Projects\MySQLIntergration\Win64\Debug\libmysql.dll]. Library has unsupported architecture [x64]. Required [х86].
Hint: check it is in the PATH or application EXE directories, and has x86 bitness..
Возможные причины:
- Несовпадение разрядности приложения и используемой библиотеки libmysql.dll.
Способы исправления:
- Использовать библиотеку libmysql.dll в соответствии с разрядностью приложения.
Источники
- Configuring Drivers (FireDAC) (Официальная документация);
С сервером на FreeBSD будет коннектиться?
А, почему нет? Если всё правильно настроено с подключением проблем быть не должно.