unit DataModule;

interface

uses
  System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
  FireDAC.Phys, FireDAC.Comp.Client, FireDAC.Phys.MySQLDef, FireDAC.Phys.MySQL,
  FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.Stan.Async,
  FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet;

type
  TDataModule1 = class(TDataModule)
    FDManager1: TFDManager;
    FDPhysMySQLDriverLink1: TFDPhysMySQLDriverLink;

    function IsConnectionDef(AName:string):boolean;

    procedure CreateMyConnDefName(Sender: TObject);
    procedure DataModuleCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

{ TDataModule1 }

procedure TDataModule1.CreateMyConnDefName(Sender: TObject);
var oParams:TStrings; DriverID:string;
begin
  // Если уже создано - выходим
if IsConnectionDef('MyConnDefName')=true then exit;

// Определяем название драйвера
   DriverID:='MySQL23';

    //Создание переменной
  oParams := TStringList.Create;

  oParams.Add('DriverID='+DriverID);
  oParams.Add('DataBase=aphina_db');
  oParams.Add('Password=masterkey');
  oParams.Add('User_Name=root');
  oParams.Add('Port=3306');
  oParams.Add('Server=localhost');

  // Cоздание и добавление нового ConnectionDef
  FDManager1.AddConnectionDef('MyConnDefName',DriverID , oParams);

  //Освобождение переменной
  oParams.Free;

end;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin

   Self.CreateMyConnDefName(Self);
   FDManager1.Active:=true;

end;

function TDataModule1.IsConnectionDef(AName: string): boolean;
//Вспомогательная функция определения существования ConnectionDef
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;

end.
