В других постах мы говорили о разных типах соединений, но здесь поговорим именно о Private соединении. Почему именно Private? При Persistent у нас все данные на подключение хранятся в файлах, что не есть хорошо, в Private – все основные данные хранятся в памяти программы и доступны только ей. В принципе, для большинства программ – это рабочий вариант. Persistent же хорош для серверной части. Но это чисто мое личное мнение из накопившихся данных на сегодня.
Итак, добавим следующие компоненты FDConnection и FDManager
Перед всеми действиями сделаем следующее
-Поместим файлы FDDrivers.ini и FDConnectionDefs.ini в каталог с EXE, второй файл, в принципе для Private не обязательно помещать сюда же. В файле FDDrivers.ini опишем сам драйвер следующим образом
1 2 3 4 5 6 7 |
[FDDrivers.ini] Encoding=UTF8 [MySQL23] ; some comment here BaseDriverID=MySQL VendorLib=C:\MySQLDriver\libmysql.dll |
Создадим процедуру для добавления определения соединения. Если нужно создать Persistent – то просто раскоментируйте соответствующие блоки.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
//Процедура для создания определения соединения procedure AddDef; var myDef:IFDStanConnectionDef; i:integer; Path_FDDrivers:string; // Путь до файла описаний драйверов Path_FDConnectionDefs:string; // Путь до файла определений begin //В общем случае определяем файл со ссылками на драйвера //Если FDDrivers.ini лежит в директории EXE, то //этот шаг можно пропустить //Для примера укажем путь к директории приложения //Но без его указания тоже бы всё работало, если FDDrivers.ini //лежит рядом с EXE Path_FDDrivers:=TPath.GetDirectoryName(AppName)+ TPath.DirectorySeparatorChar+ 'FDDrivers.ini'; FDManager.DriverDefFileName:=Path_FDDrivers; FDManager.DriverDefFileAutoLoad:=true; { Этот шаг только для Persistent соединений //Расскоментируйте, если Вам нужно Persistent //Определяем файл ConnectionDefs Path_FDConnectionDefs:=TPath.GetDirectoryName(AppName)+ TPath.DirectorySeparatorChar+ 'FDConnectionDefs.ini'; FDManager.ConnectionDefFileName:=Path_FDConnectionDefs; FDManager.ConnectionDefFileAutoLoad:=true; } { Этот шаг для Persistent соединений, т.к. там все хранится в файле //а для Private в памяти FDManager //Расскоментируйте, если Вам нужно Persistent //Проверяем нет ли уже ConnDef с таким же именем for i := 0 to FDManager.ConnectionDefs.Count-1 do begin if FDManager.ConnectionDefs[i].Name='MySQL_Persistent_def' then exit; end; } //Создаем определение соедиинения myDef:=FDManager.ConnectionDefs.AddConnectionDef; myDef.Name:='MySQL_aphina_db_def'; myDef.Params.DriverID:='MySQL23'; myDef.Params.Database:='aphina_db'; myDef.Params.UserName:='root'; myDef.Params.Password:='masterkey'; // Далее другая техника добавления параметров myDef.Params.Add('Server=127.0.0.1'); myDef.Params.Add('Charset=utf8'); // mydef.MarkPersistent; //<< Только для Persistent соединений mydef.Apply; end; |
В OnCreate пропишем следующее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
procedure TDataModule1.DataModuleCreate(Sender: TObject); var PathTo_FDConnectionDefs_ini:string; PathTo_FDDrivers_ini:string; begin AddDef; //Создаем определение соединения, PriVate fd_aphina_db_connection.ConnectionDefName:='MySQL_aphina_db_def'; fd_aphina_db_connection.Connected:=true; if fd_aphina_db_connection.Connected then showmessage('Connected'); end; |
Вот результат