Jakmile skončíte Databázové řešení Delphi, posledním krokem je úspěšné nasazení počítače uživatele.
ConnectionString za běhu
Pokud jste používali komponenty dbGo (ADO), pakConnectionString majetek TADOCpřipojení Určuje informace o připojení pro úložiště dat.
Je zřejmé, že při vytváření databázových aplikací, které mají být spuštěny na různých počítačích, by připojení ke zdroji dat nemělo být ve spustitelném souboru pevně zakódováno. Jinými slovy, databáze může být umístěna kdekoli v počítači uživatele (nebo na jiném) počítač v síti) - připojovací řetězec použitý v objektu TADOConnection musí být vytvořen na doba běhu. Jedním z navrhovaných míst pro uložení parametrů připojovacího řetězce je Registr systému Windows (nebo se můžete rozhodnout použít „obyčejný“ INI soubory).
Obecně platí, že chcete-li vytvořit připojovací řetězec v době spuštění, musíte
a) umístit úplnou cestu do databáze v registru; a
b) při každém spuštění aplikace si přečtěte informace z registru, „vytvořte“ ConnectionString a „otevřete“ ADOConnection.
Databáze... Připojit!
Abychom vám pomohli pochopit tento proces, vytvořili jsme ukázkovou aplikaci „kostra“ skládající se z jednoho formuláře (hlavní forma aplikace) a datového modulu. Datové moduly Delphi poskytují pohodlný organizační nástroj, který se používá k izolaci částí aplikace, které zpracovávají připojení k databázi a obchodní pravidla.
OnCreate událost datového modulu je místo, kde umístíte kód pro dynamické sestavení ConnectionString a připojení k databázi.
postup TDM.DataModuleCreate (odesílatel: TObject); začít-li DBConnect pak ShowMessage ('Připojeno k databázi!') jiný ShowMessage ('NENÍ připojeno k databázi!'); konec;
Poznámka: Název datového modulu je „DM“. Název komponenty TADOConnection je „AdoConn“.
DBConnect funkce provede vlastní práci s připojením k databázi, zde je kód:
funcTDM.DBConnect: boolean; var conStr: string; Název_serveru, DBName: řetězec; začítNázev_serveru: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Poskytovatel = sqloledb;' + 'Zdroj dat =' + ServerName + ';' + 'Počáteční katalog =' + DBName + ';' + 'ID uživatele = myUser; Heslo = myPasword '; Výsledek: = false; AdoConn. Zavřít; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = False;-li (NE AdoConn. Připojeno) pakSnaž se AdoConn. Otevřeno; Výsledek: = True; až nana E: Výjimka dělatzačítMessageDlg ('Došlo k chybě při připojování k. databázi. Chyba: '+ # 13 # 10 + E. Zpráva, mtError, [mbOk], 0);-liNE TDatabasePromptForm. Spustit (název_serveru, DBName) pak Výsledek: = false. jinýzačít WriteRegistry ('DataSource', ServerName); WriteRegistry ('DataCatalog', DBName); // vyvolání této funkce Výsledek: = DBConnect; konec; konec; konec; konec; //DBConnect
Funkce DBConnect se připojí k databázi MS SQL Server - ConnectionString je vytvořen pomocí lokálního connStr proměnná.
Název databázového serveru je uložen v Název_serveru proměnná, název databáze je držen v DBName proměnná. Funkce začíná načtením těchto dvou hodnot z registru (pomocí vlastního ReadRegistry () postup). Po sestavení ConnectionString jednoduše zavoláme AdoConn. otevřeno metoda. Pokud toto volání vrátí „true“, úspěšně jsme se připojili k databázi.
Poznámka: Jelikož explicitně předáváme přihlašovací informace přes ConnectionString, je datový modul Since vytvořené před hlavním formulářem, můžete bezpečně volat metody z datového modulu v OnCreate MainForm událost.LoginPrompt Vlastnost je nastavena na false, aby se zabránilo zbytečnému dialogu pro přihlášení.
"Zábava" se spustí, pokud dojde k výjimce. I když může existovat mnoho důvodů pro selhání metody Open, předpokládejme, že název serveru nebo název databáze je špatný.
V takovém případě dáme uživateli šanci určit správné parametry zobrazením vlastního dialogového formuláře.
Ukázková aplikace obsahuje také jeden další formulář (DatabasePromptForm), který uživateli umožňuje určit server a název databáze pro komponentu připojení. Tento jednoduchý formulář poskytuje pouze dvě editační pole, pokud chcete poskytnout uživatelsky přívětivější rozhraní, můžete přidat dva ComboBoxy a vyplnit je výčtem dostupných serverů SQL a načtením databází na serveru SQL.
Formulář DatabasePrompt poskytuje vlastní metoda třídy s názvem Execute, který akceptuje dva parametry proměnné (var): ServerName a DBName.
S "novými" daty poskytnutými uživatelem (název serveru a databáze) jednoduše zavoláme funkci DBConnect () (rekurzivně). Informace jsou samozřejmě nejprve uloženy do registru (pomocí jiné vlastní metody: WriteRegistry).
Ujistěte se, že DataModule je první vytvořený formulář!
Pokud se pokusíte vytvořit tento jednoduchý projekt sami, můžete při spuštění aplikace zaznamenat výjimky z porušení přístupu.
Ve výchozím nastavení se první formulář přidaný do aplikace stane MainForm (první vytvořený). Když do aplikace přidáte datový modul, bude datový modul přidán do seznamu „formulářů pro automatické vytváření“ jako formulář, který bude vytvořen po hlavním formuláři.
Nyní, pokud se pokusíte volat některou z vlastností nebo metod datového modulu v události OnCreate MainForm, dostanete výjimku narušení přístupu - protože datový modul ještě nebyl vytvořen.
Chcete-li tento problém vyřešit, musíte ručně změnit vytvořené pořadí datového modulu - a nastavit jej tak, aby byl první formulář, který aplikace vytvoří (buď pomocí dialogu Vlastnosti projektu nebo úpravou) Zdrojový soubor projektů).
Protože datový modul je vytvořen před hlavním formulářem, můžete bezpečně volat metody z datového modulu v události OnCreate MainForm.