Delphi - MySQL szerverek elérése Delphi-ből

MySQL 3. rész

forráskód letöltése
Legutóbbi részben egy nem túl kényelmes, de ízig-vérig "programozós" módszerrel értük el a MySQL szervereken tárolt adatokat. Ma, korunk elvárásainak sokkal inkább megfelelő megoldással foglalkozunk az ODBC meghajtók használatával. Immár csatasorba állíthatjuk a Delphi adatbázis komponenseit és gyakorlatilag egyetlen programsor megírása nélkül készíthetünk adatbázis kezelő alkalmazásokat.
Cikkünkhöz mellékeltünk egy példát a MySQL kiszolgálón szereplő "mysql" nevű tábla elérésére. Használata előtt fontos, hogy az alábbiak szerint állítsuk be az ODBC kapcsolatot.
Az ODBC iránti igény a MySQL Windows-os implementációja után alakult ki. Egyéb támogatás hiányában ez jelentette a leginkább kedvelt és legszélesebb körben alkalmazható megoldást. Nem kifejezetten Delphi-s támogatásról van szó, hanem egy általános meghajtó programról (ODBC - Open Database Connectivity), mely beépül a Windows-ba és programok illetve szkriptek számára biztosítja az adatbázis motort. Elterjedtségére jellemző, hogy Linuxos verziók is készültek, melyekkel Windows adatbázisok érhetők el Linuxos programokból.
Alapvető feltételek
Elsőként be kell szereznünk egy ODBC meghajtót a www.mysql.com címről. A termék folyamatos fejlesztés alatt áll és két lehetőségünk van: vagy egy korábbi stabil verziót vagy egy újabb, de még fejlesztés alatt állót töltünk le. Nagyon fontos, hogy a Windows 9x sorozaté nem egyezik meg a Windows NT/2000/XP-vel, erre oda kell figyelni. Mérete kb. 1,5 MB.
Telepítés
Letöltés után következik a telepítés, ami angol nyelven zajlik és néhány másodperc alatt végezhetünk vele. A magyar verzió hiánya nem befolyásolja az adatbázis kezelést. Egy valamire kell csak figyelni, hogy az "Install Drivers" oldal "Available ODBC Drivers" listájában válasszuk ki a "MySQL" bejegyzést és csak utána kattintsunk az "OK" gombra, különben nem zajlik le a telepítése. A többi helyen fogadjuk el a felkínált lehetőségeket. Ha végeztünk keressük meg a Vezérlőpult > Felügyeleti eszközök > Adatforrások (ODBC) (Control Panel > Administrative Tools > Datasources (ODBC)) helyet.

Nyissuk meg és a "Felhasználói DSN" ("User DSN") oldalon kell látnunk egy meglévő adatbázis kapcsolatot "sample-MySQL" néven. Használhatjuk ezt is, de hozhatunk létre újat is.

Új adatbázis kapcsolat kialakítása
Kattintsunk a "Hozzáadás" ("Add") gombra, majd válasszuk ki a listából a "MySQL" bejegyzést és kattintsunk a "Befejezés" ("Finish") gombra.
Megjelenik egy angol nyelvű beállító ablak (ugyanezzel az ablakkal találkozunk, ha a "Felhasználói DSN" ("User DSN") oldalon a "Beállítás" ("Configure") gombra kattintunk. A kapcsolat kialakításához szükséges legalapvetőbb paraméterek a következők:

  • "Windows DSN name" = kapcsolat neve
  • "MySQL host (name or IP)" = a MySQL kiszolgáló neve vagy IP címe
  • "MySQL database name" = azon adatbázis neve, melyhez kapcsolódni akarunk
  • "User" = az adatbázis elérésére jogosult felhasználói név (a MySQL rendszergazda állítja be)
  • "Password" = az előző névhez tartozó jelszó.
Ennyi adatra tehát minimum szükség van, de megadható a kommunikációs port száma is, amennyiben eltér az alapértelmezett 3306-tól és minden kapcsolat létrejötte után futtathatunk egy SQL parancsot, amit az "SQL command on connect" mezőbe kell beírni. Ezenkívül számos egyéb beállítás is elérhető az "Options that affects the behaviour of MyODBC" szekció jelölőnégyzeteinek használatával.
Adatbázis komponensek használata
Ha a fenti előkészületekkel végeztünk, elővehetjük a Delphi-t. Az alábbi példáinkban a MySQL-hez mellékelt "mysql" nevű mintaadatbázissal teremtünk kapcsolatot úgy, hogy a DSN név: "Delphi Software Online".
Helyezzünk el egy Form-on egy Datasource és egy Table komponenst. Előbbi "Dataset" tulajdonsága mutasson a Table-re. Majd gördítsük le a Table komponens "DatabaseName" menüjét, itt láthatjuk az ODBC kapcsolat elemeket. Keressük ki a "Delphi Software Online" aliast és kattintsunk rá. Ekkor aktivizálható a "TableName" tulajdonság, válasszuk ki a "db" táblát. Ha nem találjuk, rosszul van konfigurálva az ODBC. A hibák leggyakoribb oka a helytelenül megadott felhasználói név. Ezen a ponton tegyünk egy kis kitérőt:
Tegyük fel, hogy a MySQL-ben van egy "root" felhasználó, aki korlátozás nélkül hozzáférhet az összes adatbázishoz. Az ODBC konfigurálása során beírjuk a felhasználói név mezőbe a "root" nevet és megadjuk a hozzá tartozó jelszót. Igen ám, de a Windows - MySQL között "felhasználói név@gépnév.tartománynév" formában kerül elküldésre és a MySQL kiszolgálót ennek megfelelően kell konfigurálni, különben nem engedélyezi a hozzáférést. Szintén a fenti www.mysql.com címről lehet letölteni néhány segédalkalmazást (pl.: MyCC), melyekkel az ilyen irányú műveletek kényelmesen elvégezhetők.
Következő lépésben állítsuk az "Active" tulajdonságot "True"-ra. Most már van adatbázis kapcsolatunk. Helyezzünk el a Form-on egy DBGrid komponenst, melynek a "DataSource" tulajdonsága mutasson az előbbi DataSource komponensre. Megjelennek a "db" tábla adatai. Futtassuk a programot és tetszés szerint szerkeszthetjük az adatokat a DBGrid lehetőségeinek megfelelően. Talán nem a legjobb választás a "mysql" adatbázis, mert rendelkezik néhány tulajdonsággal (pl.: kötelező egyes mezők kitöltése), amik megnehezítik a próbálgatásokat.
MySQL konfigurációtól függ, hogy az adatbázisok elérésénél megjelenik-e a felhasználói nevet és jelszót kérő ablak. Előfordulhat, hogy minden programfuttatás alkalmával felbukkan, lassítva a munkát. Ha a helyi biztonsági körülmények lehetővé teszik (pl. nem tárolunk fontos adatokat vagy csak tesztelünk), akkor automatizálhatjuk a bejelentkezést. Ehhez helyezzünk el egy Database komponenst a Form-unkon és állítsuk be az "AliasName" legördülő menüben a "Delphi Software Online" értéket. Írjuk be a "DatabaseName" mezőbe: "Database1" (írhatunk mást is).

Ezután a "Params" TString-be írjuk be a bejelentkezési nevet és jelszót a következő formában:
user name=név
passwod=jelszó
A "LoginPrompt"-ot állítsuk "False"-ra a "Connected"-et, pedig "True"-ra. Így a Database komponens elvégzi helyettünk a bejelentkezést. Még annyit meg kell tenni, hogy a Table komponens "DatabaseName" tulajdonságát átállítjuk "Database1"-re, majd az időközben lekapcsolódó "Active"-t "True"-ra.
A fent leírtak alapján az összes Delphi adatbázis kezelő komponens használható a MySQL adatbázisok elérésénél, függetlenül attól, hogy a kiszolgáló például egy Linux szerveren fut. Szintén változatlan formában használhatók az egyéb adatbázis parancsok, tulajdonságok (pl.: FieldByName, Filter, stb.). Egy dolgot kell csak figyelembe venni: programjainknak mindig alkalmazkodni kell a MySQL által ismert adattípusokhoz. Részletes leírást találunk a MANUAL.HTML fájlban, amit az adatbázis kiszolgálóhoz kapunk vagy letölthetünk az Internetről.
A következő részben a Delphi ez ideig egyetlen MySQL támogatásáról írunk.

MySQL cikksorozat