Adatbáziskezelés Delphi 5 alatt Bese Antal 2006. http://toni.web.elte.hu/delphi
1. Bevezetés Számítógépes adattárolás fájlokban. Az egész adatbázist egy fájlban (Pl.: Access, Interbase,és a legtöbb SQL adatkiszolgáló) Az adatbázis felbontva táblákra, indexekre, ... (Pl.: Paradox, dBase) adatbázis könyvtárak táblák fájlok
Bevezetés folyt. A Delphi adatbázis-alkalmazások nem közvetlenül kommunikálnak az adatbázisokkal, hanem valamilyen adatbázismotoron keresztül érik el az adatbázist. Delphi alatt a Borland Database Engine (BDE), és a Microsoft ActiveX Data Objects (ADO) használata terjedt el.
2. BDE (Borland Database Engine) Számos adatforrást kezel, elérésüket közvetlen módon valósítja meg. pl. dBase, FoxPro, Access, ... Kapcsolatot tud létesíteni olyan adatbázis-kiszolgálókkal, mint az Oracle, DB2, Sybase, sőt kapcsolatba tud lépni ODBC meghajtókkal is (ekkor inkább az ADO-t használjuk). Kifinomult cache-kezelés, stb..
3. Ado (Microsoft ActiveX Data Objets) Microsoft fejlesztés... A MS OLE Db adatelérési technológián alapul, amely elérést biztosít relációs és nem-relációs adatbázisokhoz, levelezési és fájlrendszerekhez, és egyedi üzleti objektumokhoz. Nem igényli a BDE könyvtárait, de szükségesek hozzá az ADO/OLE DB futás idejű csomagjai (Windows 2000-től felfelé).
4. Hordozhatóság Ha a BDE-megközelítést választjuk az adatbázis eléréséhez, akkor mindenkféleképpen telepítenünk kell a már megírt adatbázis-kezelő alkalmazásunk mellé a BDE-t is. Éppen ezért érdemes valamilyen telepítés-előkészítő programot használnunk (Pl.: InstallShield, Inno Setup, ...).
Hordozhatóság folyt. Ezek a programok könnyen konfigurálhatóak, segítségükkel a felhasználó zökkenőmentesen telepítheti a BDE-t A Delphi különféle licenszei foglalkoznaka BDE terjeszthetőségével - "elvileg" szabadon terjeszthető). Az ADO ehhez képest nem igényel semmilyen új telepítést.
5. Az adatbázis létrehozása Az adatbázis létrehozásának legegyszerűbb módja a Delphi 5-el szállított Database Desktop utility használata. Első lépésként egy alias (másodlagos) nevet kell létrehoznunk, ami egy elérési utat jelent Második lépésként pedig az adatbázisunkhoz tartozó táblákat kell megkonstruálnunk.
6. A Delphi adatbázis-komponensei A komponenspaletta Data Acces (Adatelérés) lapján találhatóak azok az összetevők, amelyekkel a BDE-központú adatbázisokat használhatjuk. Legtöbbjük nem látható komponens (adatkapcsolatok, táblák, lekérdezések, ...). Az adatok megjelenítésére szolgáló komponenseket a Data Controls lapon találjuk.
7. Adatelérés a Delphiben Az adatbázis eléréséhez mindenféleképpen szükségünk van egy adatforrásra, melyet a DataSource kompomenssel adhatunk meg. A DataSource nem közvetlenül az adatbázisra, hanem egy DataSet (Adatkészlet) nevű komponensre hivatkozik (pl. egy tábla, lekérdezés, tárolt eljárás, … , ADO, InterBase vagy más egyéni adatkészlet).
8. Megvalósítás Amint elhelyeztünk egy adatkészletet a formon, a DataSource komponens DataSet tulajdonságával hivatkozhatunk rá. Segítség: az Object Inspector megadja az elérhető adatkészletek listáját.
9. A „Table” komponens Az egyik legegyszerűbb módszer, hogy egy már meglévő adattáblánk tartalmát elérjük. A komponens DatabaseName tulajdonságával kapcsolhatjuk össze az adatbázisunkkal. Egy elérési utat, vagy egy fiktív alias nevet (másodnév) kell megadnunk Az elérhető adatbázisokat szintén megjeleníti az Object Inspector. A TableName tulajdonságban adhatjuk meg a megjeleníteni kívánt adattábla nevét.
10. A „Query” komponens Nagyon hasonló a Table-höz Az SQL nyelven alapuló lekérdezések megvalósításra használhatjuk. A Table komponenssel ellentétben, csak a Database tulajdonságát kell állítanunk (a Tablename tulajdonságnak itt nem is lenne értelme).
11. Lekérdezések használata - a Query komponens A lekérdezést a Query komponens Sql tulajdonságában tudjuk definiálni. Query1.Sql.Add('SELECT * FROM tabla;'); A beírt lekérdezést letörölhetjük: Query1.Clear; Lekérdezés lefuttatása Query1.Open; Lekérdezés lezárása Query1.Close;
12. Az adatkészlet Az adatkészletünknek többféle állapotai lehetnek, attól függően, hogy éppen milyen műveletet hajt(ott)unk rajta végre. Az éppen aktuálisat a State tulajdonság jelöli, érdekesebb példák: dsBrowse - az adatkészlet normál böngésző üzemmódban van, dsEdit - az adatkészelt szerkesztő üzemmódban van, dsInsert - új rekordot készülünk beszúrni (pl. az insert metódussal), dsInactive - az adatkészlet le van zárva.
13. Összefoglalás - adatok elérése Adatbázis létrehozása Tervezési időben Futási időben Adatforrás összekapcsolása az adatbázissal DataSource DataSet Adatbázis komponensek Databasename + Tablename
14. Adatok megjelenítése A megszokott Windows-os adatkezelő komponensek nagy részének létezik olyan megfelelője, mely valamilyen módon kapcsolatban áll egy adatbázissal. Érdemes áttanulmányozni a komponenspaletta Data Controls (Adatvezérlők) lapját. Ezeket a komponenseket találhatjuk ott: DBGrid, DBNavigator, DBText, DBEdit, DBMemo, DBImage, DBListBox, DBComboBox, DBCheckBox, DBRadioGroup, DBRichEdit,DBCtrlGrid, DBChart.
Adatok megjelenítése folyt. Egy új vezérlő elem. DBNavigator - egy olyan gombgyűjtemény, amellyel könnyen mozoghatunk az adataink között, és adhatunk ki rájuk vonatkozó utasításokat (szerkesztés - edit, mentés - post, stb).
15. Adatmezők elérése Field komponens (TField osztály egy példánya) a Delphi a adatfüggő vezérlői közvetlenül az adatbázis mezőire vonatkozó Field obejktumokhoz kapcsolódnak. Amikor adatkészletet nyitunk meg, akkor a Delphi automatikusan létrehozza őket már futási időben. A táblák és lekérdezések ezeket a mezőket a Fields tulajdonságban tárolják (lényegében egy tömbben).
Adatmezők elérése folyt. Pl. az elérésre: Table1.Fields[0].AsString Table1.FieldByName('mezo_neve').AsString Table1.['mezo_neve'].AsString
16. Tervezési tipp - az Adatmodul használata Eddig egy adatbáziskezelő program fejlesztése során az adatelérési és adatfüggő vezérlőket is felpakoltuk a formra. Ez egy egyszerű program esetén elég, DE egy összetettebb/bonyolultabb feladatnál nagyon bonyolítja a dolgunkat (konzisztens tárolás, ...) Ötlet: a nem látható vezérlőket tegyük egy tárolóba - adatmodul (TDataModul osztály).
Tervezési tipp - az Adatmodul használata folyt. Csak tervezési időben létezik. Fő felhasználási területe - adatelérési komponensek több form közötti megosztása. Létezik egy ún. adatdiagram nézete, ahol alapvető UML-elemekkel találkozhatunk.
vége.