Cikk delphi és interbase

Delphi és Interbase. I. rész, ő megnyitása.

Kitérő, vagy „Mi lenne”

Hello mindenkinek! Ez valószínűleg egy cikksorozatot elveinek épület bázisok IB és klónok. Ciklus mert elfogy néhány lap a témában lehetetlen elvileg, és szeretnék, hogy fontolja meg egy csomó dolog, hogy nem kell az igazolásokat, vagy az irodalomban, és miután véget megértsük ezeket a dolgokat fokozatosan, kezdve a legegyszerűbb alapokat. De a finálé, hogy írjon egy teljes értékű hálózati program. Azonnal azt mondom, hogy „során a játék” meg kell vizsgálni egy csomó kérdést szükséges értelmes munkát, és az IB (és gyakran - és Delphi) valójában nem kapcsolódik. Legyen türelmes, ha nem tudja, (akkor még jól jöhet :)), vagy kihagy, ha nem, és így érthető.







És még egy utolsó, de fontos, kivétellel. Sok a dolog, hogy lesz itt tárgyalt, többek között példák végre lehet hajtani több szempontból is. Megyek, hogy ne pusztán a szoftver módszereket. Például a következő szakaszban fogunk összpontosítani létre az első adatbázis. Ez úgy történik, kevesebb mint egy perc alatt az azonos IbExpert'e, de mindannyian csinálni a kezét és az írott kifejezetten erre a programra. Bizonyos ez úgy tűnhet, mint a „kínai kommunizmus”, de a tapasztalat azt mutatja, hogy az a személy, aki pontosan tudja, hogyan, milyen paraméterekkel létrehozott kódot alap, sokkal gyorsabban fogja érteni, hogyan kell létrehozni az adatbázis bármely shell. De az ellenkezője általában nem igaz. Ha van egy életen át dugta a gombok a héjban, majd hirtelen szembe azzal az igénnyel, hogy hozzon létre egy adatbázist a futási idő, a legvalószínűbb, akkor van baj. Ezt az elvet fogja vallani során az egész cikksorozatot.

Felkészülés az első napon

Valójában, a telepítés nem jelenthet problémát: csak indítsa el a letöltött telepítő és minden, ami szükséges lehet beállítani. Most valahol a lemezen ülsz egy-adatbázis, és létre kell hozni egy adatbázist, csatlakozni hozzá, és kíváncsiságból, hogy vizsgálja meg, és ami ott van. (Gondolod semmi? Rossz!)
Fuss Delphi, hozzon létre egy új projektet, és mentse el a lemezen. 5.0 verziótól kezdve a Delphi tartalmazza a már említett készlet IBX alkatrészek vagy Interbase Express, amely lehetővé teszi, hogy működjön együtt Interbase és klónok natív API, nem ODBC-kapcsolat. Fogjuk használni fogja, és abban a pillanatban mi érdekli az alkatrész
TIbDatabase. Ezen az oldalon lesz képes röviden ismertetni a tény, hogy ő tudja, hogyan. Ne aggódjon, ha hirtelen nem ért semmit, ez minden alkalommal :)
A forma, helyezze a Toolbar Akciólista és ImageList. (Meg tudod csinálni csak egy gombot az űrlapon, de én akkor is tanácsolom csinál eredetileg intelligens felület, így lehet biztonságosan építeni a jövőben). Tie ezen összetevők között a telepítés a képek ingatlan Akciólista és ToolaBar'a, és helyezze be a ImageList képet, hogy úgy gondolja, megfelel a folyamat az adatbázis létrehozásakor.

Azt is javasoljuk, hogy nevezze át alkatrészeket. Hogyan - ízlés dolga. Például, az összes nevek kezdődik egy vagy több betűt, amelyek tükrözik a típusú alkatrész, és a másik pont az E komponens. Például, minden a projekt tudom, hogy a fő formája neve mindig FMAIN, főeszköztár - tbMain és így tovább. És ha azt kell, például, meg a gombot felelős minimalizálva a gyermek ablakok nem szeretnék mondani, hogy ez lesz az úgynevezett btnWindowMinimizeAll, a megfelelő menüpont - miWindowMinimizeAll a cím menü, amelyben található - miWindow, a felvezető összes ez lesz székhelye aWindowMinimizeAllExecute (TAction). Persze, ez időt vesz igénybe, de növeli az olvashatóságot kódot többször, és ami a legfontosabb, nagyban könnyíti meg a tájékozódást bármilyen projektben, akkor is, ha te írtad néhány évvel ezelőtt.

Most hozzon létre egy új elem Akciólista add meg a kívánt képet, és hozzá az újonnan létrehozott gombot Action. Ezen a ponton meg kell jelennie az olyasmi, mint a következők:

Cikk delphi és interbase


Most duplán kattintva a fellépés Akciólista, akkor képes lesz arra, hogy előírja bizonyos felvezető érte. Ez a felvezető, az ötlet, és dolgozzon ki egy bázis. Ha vette a fáradságot lépjünk át a komponens leírása
TIbDatabase, akkor ez volt a megfelelő módszerrel (createDatabase), hogy hozzon létre egy adatbázist. Most nézzük meg, hogyan működik ez a módszer.

Adatbázis létrehozása

Az űrlap belépő minimum paramétereket

Nyilvánvaló, hogy a szükséges paramétereket, hogy hozzon létre egy adatbázist, meg kell valahogy be. azaz létrehozásával párbeszéd nem kibújik. Tehát egy új formában a projekt (dlgDbCreate), és piszkálni rajta a szükséges input mezőket. Kap valami ilyesmi:

Cikk delphi és interbase


Mivel az adatbázis létrehozásával kapcsolatos - nem minden nap, akkor van értelme, hogy távolítsa el ezt a listát automatikusan létrejön, és levelet eljárást, amelyet a hívás jön létre ebben a formában dinamikusan kap a felhasználó a kívánt értékeket, és vissza őket hozzánk formájában paramétereket. Ide Project / Options, dlgDbCreate tolerálták a rendelkezésre álló formák és írni egyszerű kód:







típus
TdlgDbCreate = osztály # 40; TForm # 41;
btnOk. TBitBtn;
btnCancel. TBitBtn;
lDbName. TLabel;
lDialect. TLabel;
lLogin. TLabel;
lPassword. TLabel;
eDbName. tSzerkesztés;
cbDialect. TComboBox;
eLogin. tSzerkesztés;
ePassword. tSzerkesztés;
Bevel1. TBevel;
magán

nyilvános

osztálymetódusként fDlgDbCreate. TDlgDbCreate;
végén;

var
dlgDbCreate. TdlgDbCreate;

funkció GetDbParams # 40; var DBNAME. string; var Dialect. integer;
var felhasználónév. Jelszót. húr # 41;. logikai;

funkció GetDbParams # 40; var DBNAME. string; var Dialect. integer;
var felhasználónév. Jelszót. húr # 41;. logikai;
kezdődik
A TDlgDbCreate. fDlgDbCreate nem kezdődik
Eredmény. = # 40; ShowModal = mrOk # 41; ;
ha Eredmény majd kezdődik
DBNAME. = EDbName. szöveg;
Nyelvjárást. = StrToInt # 40; cbDialect. szöveg # 41; ;
Felhasználónév. = ELogin. szöveg;
Jelszót. = EPassword. szöveg;
végén;
végén;
végén;

osztálymetódusként TdlgDbCreate. fDlgDbCreate. TDlgDbCreate;
kezdődik
ha dlgDbCreate = nil majd
dlgDbCreate. = Self. teremt # 40; nulla # 41; ;
Eredmény. = DlgDbCreate;
végén;

FreeAndNil # 40; dlgDbCreate # 41; ;
végén.

Offtopic: A osztály módszert kínál objektumok nem jelennek meg automatikusan

Paraméterátadás szerver

Abban a pillanatban, mi maradt egy játék: a takarmány a kapott paraméterek komponens
TIbDatabase és hívja a módszer createDatabase. Minden egészen triviális alatt én csak adni a kódot, hogy felhívja a figyelmet kell lennie, csak egy pont: a szerkezet a paraméterek hívás esetén a módszer, hogy hozzon létre egy adatbázist. Ez valamivel eltér a csatlakozáshoz használni. felvezető maga regisztrált aDatabaseCreate.OnExecute (TAction), amely hozzá van rendelve a csak a gomb.

eljárás TfMain. aDatabaseCreateExecute # 40; Feladónak. TObject # 41; ;
var
DBNAME. string;
Nyelvjárást. integer;
Felhasználónév. string;
Jelszót. string;

kezdődik
ha GetDbParams # 40; DBNAME. Nyelvjárást. Felhasználónév. jelszó # 41; majd
A dbMain do kezdődik
Csatlakoztatva. = FALSE;
DatabaseName. = DBNAME;
SQLDialect. = Dialect;
Params. Tiszta;
Params. hozzáad # 40; 'USER "' + felhasználónév + '"' # 41; ;
Params. hozzáad # 40; 'PASSWORD "' + jelszó + '"' # 41; ;

megpróbál
createDatabase;
MessageDlg # 40; formátum # 40; csDatabaseCreatedMsg. # 91; DBNAME # 93; # 41;. mtInformation. # 91; mbOk # 93;. 0 # 41; ;
kivéve
E. Kivétel do
MessageDlg # 40; formátum # 40; csDatabaseCreateError. # 91; E. Üzenet # 93; # 41;. mtError. # 91; mbOk # 93;. 0 # 41; ;
végén;
végén;
végén;


Alapértelmezésben a login / jelszó SYSDBA / főkulcsos. Lehet kísérletezni velük, de a komoly munka a rendszergazdai jelszót meg kell változtatni a kiinduláskor (bejelentkezés, SYSDBA, nem módosítható).

Által küldött üzenetek a program nyomtatott külön állandók nyilvánították ugyanaz, mint a szöveges erőforrások. Erre azért került sor annak érdekében, hogy később ezek az állandók könnyen szerkeszthető közvetlenül a végrehajtható (helló hatskery :)). Ennyi az egész sokáig. Most a gombra kattintva, töltse ki az űrlapot és kattintson a „Kész” lesz büszke tulajdonosa az új adatbázisba. Amikor az adatbázis nevét, hogy tartsák be a hagyományok, azaz adja meg a fájl kiterjesztése „* .GDB”. Lehetőség van, hogy lépni, nevezetesen ha megadjuk a megfelelő fájl helyét megjelent a lemezen -, hogy mi van benne.

Csatlakozás az adatbázishoz

Ismét ízlés dolga, de én elmentem az út mentén osztott intefeysa (MDI), úgy, hogy minden megnyit egy adatbázist, hogy hozzon létre egy új gyermek ablakot, amelyben az adatbázisban lehet futtatni. Ennek megfelelően a fő formája tegye tulajdonság FormStyle = fsMDIForm, kezdjük egy új formája, vegyük ki a rendszer automatikusan generálja, ez jelzi, FormStyle = fsMDIChild, és helyezze azt egy másik
TIbDatabase (dbChild) a közvetlen kapcsolat. A fő formája, kezdjük egy TAction (aDatabaseOpen), egy hozzá tartozó gombot (btnDatabaseOpen) és egy újabb minta TImageList (ilMain). Több megnyitni a fájlt, szükségünk van a párbeszéd TOpenDialog (OpenDlg) a megfelelő beállításokat. A legjobb kapcsolat regisztrálni formájában leányvállalata, amely eljárás kerül át az adatbázis fájl elérési útját, porluchenny a OpenDlg. Többek között az eljárás létrehoz egy új formája, és engedje meg, ha a kapcsolat nem sikerült. Lesz valami hasonló a következő kódot:

eljárás OpenDatabase # 40; DBNAME. húr # 41; ;
kezdődik
A TfChild. teremt # 40; kérelem # 41; nem kezdődik
dbChild. DatabaseName. = DBNAME;
dbChild. SQLDialect. = 3;
megpróbál
dbChild. Csatlakoztatva. = TRUE;
LoadObjects;
Képaláírás. = DBNAME;
megjelenítése;
kivéve
E. Kivétel csinálni kezdődik
MessageDlg # 40; formátum # 40; csDatabaseOpenError. # 91; E. Üzenet # 93; # 41;. mtError. # 91; mbOk # 93;. 0 # 41; ;
mentes;
végén;
végén;
végén;
végén;


Az egyetlen árnyalatot - beállítás nyelvjárást egyenlő három. Tény, hogy a bázis, ez lehet egyenlő, és egy. Itt van a mechanizmus feldolgozása nyelvjárások következetlenségek: tud-e csatlakozni az adatbázishoz a „túlértékelt” képest a valós nyelvjárás (ez automatikusan csökken, és nem lesz OnDialectDowngradeWarning esemény), de fordítva nem. (Lásd. SqlDialect tulajdon)

Az alapvető formája a híváskezelő egyszerűen csúnya:

eljárás TfMain. aDatabaseOpenExecute # 40; Feladónak. TObject # 41; ;
kezdődik
ha OpenDlg. Végrehajtás majd
OpenDatabase # 40; OpenDlg. Fájlnév # 41; ;
végén;

Kapok egy listát a táblák és mezők

Ebben az esetben segítünk a két eljárást ugyanazon alkatrész
TIbDatabase. GetTableNames és GetFieldNames. Az egyszerűség kedvéért én kerül a gyermek formájában TTreeView (tvObject), amelyben mi származik mindez formájában egy fa, ugyanúgy, mint ez ugyanaz IbExpert. Önrakodó eljárás semmi szokatlant önmagában nem, annak kódját:

eljárás TfChild. LoadObjects;
var
Node.
TableNode. TTreeNode;
slTables.
slFields. TStrings;
i. j. integer;
kezdődik
A tvObjects. Tételek nem kezdődik
BeginUpdate;
megpróbál
Tiszta;
Node. = Hozzáadás # 40; nulla. 'Oaaeeou' # 41; ;
slTables. = TStringList. létrehozása;
slFields. = TStringList. létrehozása;
megpróbál
dbChild. GetTableNames # 40; slTables. IGAZ # 41; ;
i. = 0 slTables. Count - 1 do kezdődik
TableNode. = AddChild # 40; Node. slTables # 91; én # 93; # 41; ;
dbChild. GetFieldNames # 40; slTables # 91; én # 93;. slFields # 41; ;
j. = 0 slFields. Count - 1 do
AddChild # 40; TableNode. slFields # 91; j # 93; # 41; ;
végén;
végül
slFields. mentes;
slTables. mentes;
végén;
végül
EndUpdate;
végén;
végén;
végén;


Ie Minden asztal, kapunk egy listát a területeken. Ez az eljárás az egy korábban írt OpenDatabase telepítés után azonnal Connected TRUE. A képernyő kimenet így néz ki:

Cikk delphi és interbase


Mint látható, az „üres” adatbázis kiderült csak egy csomó mindenféle táblázatok! Ennek az az oka, hogy amikor hívja az eljárás GetTableNames mentünk egy második paramétert [System: logikai] TRUE. És minden, amit látunk, ez nem olyan, mint a rendszer táblák. Előretekintve azt mondják, hogy ők a felelősek tárolására metaadatok, az integritás irányítási, és így tovább.

A következő cikkben fogjuk tanulni, hogyan lehet létrehozni saját tábla, nézet, és egy közelebbi pillantást a belső építészet a DBMS Interbase.

Kérdések és döntések, mint a szappan, és a fórumon. Forrás kissé fésült meghajlítani Delphi5 itt található.

SIM - értekezletek, a szerencse.




Kapcsolódó cikkek