Připojení k databázi
Připojení k databázovému stroji je realizováno nevizuální komponentou "FDConnection". Komponenta podporuje připojení k datům již v době návrhu aplikace ("Design Time"), rovněž však může být použita dynamicky a připojení může být s její pomocí vytvořeno až za běhu aplikace ("Run Time"). Z pohledu nakládání s hodnotami parametrů lze rozlišit tři základní přístupy (typy připojení):Trvalé připojení
Parametry tohoto typu připojení jsou uloženy v definičním souboru, který může být využíván různými uživateli i aplikacemi. Trvalé připojení lze definovat s využitím nástroje "FireDAC Explorer". FireDAC Explorer je samostatně spustitelný externí program ("FDExplorer.exe"), který nalezneme ve složce určené proměnnou prostředí "BDSBIN". Ve verzi XE5 je to složka "bin" domovského adresáře RAD Studia (při typické instalaci C:\Programfiles\Embarcadero\RADStudio\12.0).Nastavení proměnných prostředí naleznete v nastaveních prostředí (nabídka Tools => Options => Environment Options => Environment Variables)
Od verze XE5 je FireDAC zahrnut v hlavní nabídce. Pro spuštění FireDAC Exploreru tedy můžeme kliknout na nabídku "Tools => FireDAC Explorer". V Exploreru lze editovat stávající nebo vytvářet nové definiční soubory. Každý definiční soubor může obsahovat parametry pro libovolný počet připojení. Vždy je nejprve třeba určit ovladač (Driver ID) a následně hodnoty jednotlivých parametrů. Ty se samozřejmě liší dle použité databáze.
FireDAC Explorer na základě zadaných informací upraví nebo vytvoří nový definiční soubor (textový soubor s příponou .ini), který je uložen na disku a může tak být snadno sdílen.
Nastavení ovladače
Pokud se připojujete k databázím stejného dodavatele, ale v různých verzích, může nastat problém s použitím správných klientských knihoven. Řešením je úprava souboru FDDrivers.ini, nebo změna "VendorLib" pro příslušný "DriverLink".
Příklad 1: Zápis do FDDrivers.ini
[IBXE3]
BaseDriverID=IB
VendorLibWin32=C:\InterBaseXE3\gds32.dll
VendorLibWin64=C:\InterBaseXE3\gds64.dll
Příklad 2: Změna klientské knihovny za běhu
FDConnection1.Close;
FDPhysIBDriverLink1.Release;
FDPhysIBDriverLink1.VendorLib := 'C:\InterBaseXE3\gds32.dll';
FDConnection1.Open;
FireDAC Explorer také nabízí základní funkce pro procházení databázových objektů, zobrazení jejich struktury, zobrazení dat nebo vytváření a spouštění SQL skriptů.
Pokud chcete možnost editovat definiční soubory zpřístupnit i koncovým uživatelům aplikace, lze použít nástroj FireDAC Administrátor ("FDAdminstrator.exe"), který je určený k šíření s aplikací. FDAdministrator je omezen na práci s definičními soubory.
Příklad 3: Vytvoření Definičního souboru v kódu aplikace
Delphi
procedure TForm1.ButtonClick(Sender: TObject);
var
CnnParams: TStrings;
CnnDef: IFDStanConnectionDef;
begin
// Nastavení parametrů připojení
CnnParams := TStringList.Create;
CnnParams.Add('Server=WIN-CR0VL03P8IT');
CnnParams.Add('Database=MSDEMODB');
CnnParams.Add('OSAuthent=Yes');
// Vytvoření a pojmenování definičního souboru
FDManager1.ConnectionDefFileName :=
'C:\DEMAXE5\FDConnections\MujDefSoubor.ini';
// Vytvoření a pojmenování definice. Parametry:
// Zvolené jméno pro připojení, ovladač, parametry připojení
FDManager1.AddConnectionDef('SQL_Connection', 'MSSQL', CnnParams);
// Uložení definice
CnnDef := FDManager1.ConnectionDefs.FindConnectionDef ('SQL_Connection');
CnnDef.MarkPersistent();
CnnDef.Apply();
// Připojení k databázi
FDConnection1.ConnectionDefName := 'Test_Connection';
FDConnection1.Connected := True;
end;
C++ Builder
var
CnnParams: TStrings;
CnnDef: IFDStanConnectionDef;
begin
// Nastavení parametrů připojení
CnnParams := TStringList.Create;
CnnParams.Add('Server=WIN-CR0VL03P8IT');
CnnParams.Add('Database=MSDEMODB');
CnnParams.Add('OSAuthent=Yes');
// Vytvoření a pojmenování definičního souboru
FDManager1.ConnectionDefFileName :=
'C:\DEMAXE5\FDConnections\MujDefSoubor.ini';
// Vytvoření a pojmenování definice. Parametry:
// Zvolené jméno pro připojení, ovladač, parametry připojení
FDManager1.AddConnectionDef('SQL_Connection', 'MSSQL', CnnParams);
// Uložení definice
CnnDef := FDManager1.ConnectionDefs.FindConnectionDef ('SQL_Connection');
CnnDef.MarkPersistent();
CnnDef.Apply();
// Připojení k databázi
FDConnection1.ConnectionDefName := 'Test_Connection';
FDConnection1.Connected := True;
end;
C++ Builder
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
TStrings* CnnParams = new TStringList();
IFDStanConnectionDef* CnnDef;
// Nastavení parametrů připojení
CnnParams->Add("Server=WIN-CR0VL03P8IT");
CnnParams->Add("Database=MSDEMODB");
CnnParams->Add("OSAuthent=Yes");
// Vytvoření a pojmenování definičního souboru
FDManager1->ConnectionDefFileName =
"C:\\DEMAXE5\\FDConnections\\MujDefSoubor.ini";
// Uložení definice
FDManager1->AddConnectionDef("Test_Connection", "MSSQL", CnnParams);
CnnDef = FDManager1->
{
TStrings* CnnParams = new TStringList();
IFDStanConnectionDef* CnnDef;
// Nastavení parametrů připojení
CnnParams->Add("Server=WIN-CR0VL03P8IT");
CnnParams->Add("Database=MSDEMODB");
CnnParams->Add("OSAuthent=Yes");
// Vytvoření a pojmenování definičního souboru
FDManager1->ConnectionDefFileName =
"C:\\DEMAXE5\\FDConnections\\MujDefSoubor.ini";
// Uložení definice
FDManager1->AddConnectionDef("Test_Connection", "MSSQL", CnnParams);
CnnDef = FDManager1->
ConnectionDefs->FindConnectionDef("Test_Connection");
CnnDef->MarkPersistent();
CnnDef->Apply();
// Připojení k DB
FDConnection1->ConnectionDefName = "Test_Connection";
FDConnection1->Connected = True;
}
V době návrhu můžeme použít vestavěnou utilitu "Connection editor". Editor spustíme tak, že na formulář umístíme komponentu "FDConnection" a poté na ni klikneme pravým tlačítkem myši.
Podle typu databáze, ke které se připojujeme, zvolíme odpovídající ovladač. Následně vyplníme potřebné parametry a nastavení uložíme. Funkčnost připojení lze okamžitě vyzkoušet za pomoci tlačítka "Test".
Další možností je parametry definovat v okně "Object Inspector". Opět je třeba nejprve vybrat ovladač a potom otevřít editor pro vlastnost "Params" a ručně vypsat potřebná nastavení.
Dočasné připojení je samozřejmě rovněž možné vytvořit programově. Jednotlivé parametry definujeme přímo na úrovni připojení, v našem případě objektu "FDConnection".
Příklad 4: Vytvoření dočasného připojení
Delphi
CnnDef->MarkPersistent();
CnnDef->Apply();
// Připojení k DB
FDConnection1->ConnectionDefName = "Test_Connection";
FDConnection1->Connected = True;
}
Vyhrazené připojení
Interní připojení umožňuje technologie FireDAC definovat pouze v rámci aplikace. Definiční soubor je vytvořen s využitím komponenty "FDManager" pouze v paměti, ale není uložen na disk pro účely sdílení. Z hlediska kódu je interní připojení identické s připojením trvalým, jen není volána metoda "MarkPersistent". Interní připojení nepodporuje sdružování připojení ("connection pooling").Dočasné připojení
Pokud je připojení k databázi vytvořené jako dočasné, jsou hodnoty jednotlivých parametrů součástí zdrojového kódu aplikace. Definiční soubor není vytvářen ani v paměti, ani ukládán na disk. Údaje tedy nejsou nikde zveřejněny a nejsou dostupné jiným uživatelům ani aplikacím.V době návrhu můžeme použít vestavěnou utilitu "Connection editor". Editor spustíme tak, že na formulář umístíme komponentu "FDConnection" a poté na ni klikneme pravým tlačítkem myši.
Podle typu databáze, ke které se připojujeme, zvolíme odpovídající ovladač. Následně vyplníme potřebné parametry a nastavení uložíme. Funkčnost připojení lze okamžitě vyzkoušet za pomoci tlačítka "Test".
Další možností je parametry definovat v okně "Object Inspector". Opět je třeba nejprve vybrat ovladač a potom otevřít editor pro vlastnost "Params" a ručně vypsat potřebná nastavení.
Dočasné připojení je samozřejmě rovněž možné vytvořit programově. Jednotlivé parametry definujeme přímo na úrovni připojení, v našem případě objektu "FDConnection".
Příklad 4: Vytvoření dočasného připojení
Delphi
procedure TForm1.ButtonClick(Sender: TObject);
begin
FDConnection1.DriverName := 'MSSQL';
FDConnection1.Params.Add('Server=WIN-CR0VL03P8IT');
FDConnection1.Params.Add('Database=MSDEMODB');
FDConnection1.Params.Add('OSAuthent=Yes');
FDConnection1.Connected := True;
end;
C++ Builder
begin
FDConnection1.DriverName := 'MSSQL';
FDConnection1.Params.Add('Server=WIN-CR0VL03P8IT');
FDConnection1.Params.Add('Database=MSDEMODB');
FDConnection1.Params.Add('OSAuthent=Yes');
FDConnection1.Connected := True;
end;
C++ Builder
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
FDConnection1->DriverName = "MSSQL";
FDConnection1->Params->Add("Server=WIN-CR0VL03P8IT");
FDConnection1->Params->Add("Database=MSDEMODB");
FDConnection1->Params->Add("OSAuthent=Yes");
FDConnection1->Connected = True;
}
Connection Editor je možné zpřístupnit i uživatelům aplikace. Stačí do sekce "uses" přidat unitu "ConnEdit" a následně z kódu otevřít v ní definovaný dialog.
Příklad 5: Otevření Editoru připojení z kódu
Delphi
uses FireDAC.VCLUI.ConnEdit;
procedure TForm1.ButtonClick(Sender: TObject);
begin
if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then
FDConnection1.Connected := True
end;
C++ Builder
procedure TForm1.ButtonClick(Sender: TObject);
begin
if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then
FDConnection1.Connected := True
end;
C++ Builder
#include
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
TfrmFDGUIxFormsConnEdit *frmFDGUIxFormsConnEdit1;
if (frmFDGUIxFormsConnEdit1->Execute(FDConnection1, "")) {
FDConnection1->Connected = True;
}
}
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
TfrmFDGUIxFormsConnEdit *frmFDGUIxFormsConnEdit1;
if (frmFDGUIxFormsConnEdit1->Execute(FDConnection1, "")) {
FDConnection1->Connected = True;
}
}
Žádné komentáře:
Okomentovat