В данной статье посмотрим как добавлять, редактировать, удалять ConnectionDefs в технологии FireDAC. Где это может быть полезно? При создании, редактировании соединений. Private connections полностью опираются на ConnectionDefs. Вот как будет выглядеть программа.
Что такое ConnectionDefs?
Это наборы параметров соединений, выглядят они примерно так…
Для каждой базы данных и для каждого соединения можно определять разные наборы, ну и соответственно пользоваться ими в той или иной ситуации при установлении соединения. Продолжим!
В данной статье мы будем создавать только 1 ConnectionDef под именем MyConnDefName, редактировать и удалять его, чтобы показать общий принцип работы.
Начнём!
Создадим VCL приложение со следующим набором компонентов. Здесь кнопки, memo, FDManager.
Вспомогательная функция IsConnectionDef
Создадим функцию поиска CnnectionDef, так как она нам понадобится в дальнейшем.Я ещё только учусь программированию, поэтому некоторые вещи не знаю. Наверное,такая функция есть в библиотеке, но я её не нашел, поэтому решил написать сам. Вот её реализация.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function TForm1.IsConnectionDef(AName:string):boolean; var i:integer; SL:TStringlist; begin SL:=TStringList.Create; //Загоняем все имена Connection Defs в SL for i := 0 to FDManager1.ConnectionDefs.Count-1 do SL.Add(FDManager1.ConnectionDefs.Items[i].Name); //Ищем AName в SL, проверем существование if Sl.IndexOf(AName)<>-1 then result:=true // Найдено else Result:=false; // Не найдено SL.Free; end; |
Кнопка Add
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
procedure TForm1.bAddClick(Sender: TObject); var oParams:TStrings; begin //Создание переменной oParams := TStringList.Create; oParams.Add('DriverID=MySQL'); oParams.Add('DataBase=MyDataBase'); oParams.Add('Password=MyPassword'); oParams.Add('User_Name=MyUser_Name'); oParams.Add('Port=3306'); oParams.Add('Server=MyHost'); // Cоздание и добавление нового ConnectionDef FDManager1.AddConnectionDef('MyConnDefName','MySQL' , oParams); //Освобождение переменной FreeAndNil(oParams); end; |
Кнопка Delete
1 2 3 4 5 6 |
procedure TForm1.bDeleteClick(Sender: TObject); begin if IsConnectionDef('MyConnDefName') then FDManager1.ConnectionDefs.FindConnectionDef('MyConnDefName').Delete; end; |
Кнопка Edit
(редактирование параметров)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
procedure TForm1.bEditClick(Sender: TObject); var oParams:TStrings; begin if IsConnectionDef('MyConnDefName') then begin bDeleteClick(Self); //Берем новые параметры oParams:=TStringList.Create; oParams.Assign(memo2.Lines); // << Берем новые параметры из memo2 // Cоздание и добавление нового ConnectionDef FDManager1.AddConnectionDef('MyConnDefName','MySQL' , oParams); showmessage('Параметры успешно изменены'); //Удаляем переменные oParams.Free; end; end; |
Кнопка Show
(показывает определения соединений и параметры MyConnDefName)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
procedure TForm1.bShowClick(Sender: TObject); var i:Integer; begin memo1.Lines.Clear; for i := 0 to FDManager1.ConnectionDefs.Count-1 do memo1.Lines.Add(FDManager1.ConnectionDefs.Items[i].Name); if IsConnectionDef('MyConnDefName') then begin memo2.Lines.Clear; for i := 0 to FDManager1.ConnectionDefs.FindDefinition('MyConnDefName').Params.Count-1 do memo2.Lines.Add(FDManager1.ConnectionDefs.FindDefinition('MyConnDefName').Params[i]) end else memo2.Lines.Clear; end; |
Тестируем приложение
Все добавляется, редактируется и удаляется. До совершенства я эту программу доводить не буду, так как цель статьи – закрепить навыки работы с ConnectionDefs!