В предыдущих постах я разбирался в основном с теорией. Этот же пост посвящен – маленькой, простой, практичной задаче – подключиться к БД MySQL при помощи FireDAC.
Подключаться будем при помощи так называемого PersistentConnection, что относительно, просто, но есть возможность изменения внешних файлов, в чем может быть теоретически – опасность. Напомню, всего в доках описано 3 вида подключения
Persistent
Private
Temporary
Создадим приложение и перенесем файлы подключений (FDConnectionDefs.ini, FDDrivers.ini) в директорию с файлом .EXE, для простоты примера
В FDConnectionDefs у меня написано следующее
1 2 3 4 5 6 7 8 |
[FDConnectionDefs.ini] Encoding=UTF8 [MySQL_aphina_db_connection] Database=aphina_db User_Name=root Password=masterkey DriverID=MySQL |
В FDDrivers указано следующее
1 2 3 4 5 6 7 |
[FDDrivers.ini] Encoding=UTF8 [MySQL] ; some comment here BaseDriverID=MySQL VendorLib=C:\MySQLDriver\libmysql.dll |
Также нужно прописать сам драйвер libmysql.dll Эта ссылка для 32 разрядного приложения.
Простота Persistent заключается в том, что все просто описано в ini файлах, можно подключаться к одним и тем же файлам из разных приложений. Но если отдать это клиенту, который разбирается в программировании – то все данные для доступа к базе есть, что не есть хорошо. Он может подключиться к базе при помощи того же WorkBench – посмотреть на таблицы в нём и так далее.
Также Persistent на мой взгляд хорошее решение для серверных приложений, например, веб-сервис на UniGUI.
Теперь в DataModule разместим FDConnection и FDManager и дадим им необходимые для проекта имена
Теперь при создании DataModule напишем вот такой код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
...uses System.IOUtils... procedure TDataModule2.DataModuleCreate(Sender: TObject); var PathTo_FDConnectionDefs_ini:string; PathTo_FDDrivers_ini:string; begin //Путь к FDConnectionDefs.ini' PathTo_FDConnectionDefs_ini:=TPath.GetDirectoryName(AppName)+ TPath.DirectorySeparatorChar+'FDConnectionDefs.ini'; //Путь к FDDrivers.ini PathTo_FDDrivers_ini:=TPath.GetDirectoryName(AppName)+ TPath.DirectorySeparatorChar+'FDDrivers.ini'; //Прописываем эти пути в FDManager FDManager.ConnectionDefFileName:=PathTo_FDConnectionDefs_ini; FDManager.DriverDefFileName:=PathTo_FDDrivers_ini; // Прописываем ConnectionDefName fd_aphina_db_Connection.ConnectionDefName:='MySQL_aphina_db_connection'; //fd_aphina_db_Connection.DriverName:='MySQL'; //Коннектимся и проверяем результат fd_aphina_db_Connection.Connected:=true; if fd_aphina_db_Connection.Connected then showmessage('Connected'); end; |
Вот наш результат