Delphi - ActiveX Data Object, avagy az ADO paletta komponensei

ADO paletta 1. rész

Az adatbázis elérési technológiák Windows platformon erőteljes fejlődést mutattak az elmúlt néhány évben. Ma már több objektumorientált felület közül választhatunk vérmérsékletünk szerint. Ilyen az OLE DB, az ODBC-re épülő RDO, a Jet motorra támaszkodó DAO vagy az OLE DB-t használó ADO. Ebben a cikkben az ADO technológiát vesszük egy kicsit jobban szemügyre. Egy kis történelem

Az említett technológiák közül az ADO a legfiatalabb. A Microsoft 1996-ban adta ki az OLE DB SDK-t, amely COM felületet biztosított minden táblázatos adatszolgáltató számára. Tekinthetjük úgy is, mintha az ODBC API objektumorientált változatát kaptuk volna kézhez, bár a két technikának ilyen módon nincs köze egymáshoz. Az OLE DB is közvetlenül kommunikál az adatforrással (akárcsak az ODBC), ehhez azonban az adatforrásnak rendelkeznie kell egy OLE DB provider-rel. Szerencsére az ODBC-hez is írtak egy OLE DB providert (MSDASQL), így végeredményben bármilyen ODBC adatforrás elérhető az OLE DB számára.

Rengeteg előnye mellett az OLE DB-nek nagy hátránya, hogy egy alkalmazás írása nagy szakértelmet és sok járulékos programkód megírását követeli meg. Hogy ezt a favágást a Microsoft megkönnyítse a fejlesztőknek, az OLE DB SDK-ban mellékelte az ActiveX Data Object nevű magas szintű felületet, vagyis az ADO-t.

Az ADO tehát megkönnyíti az OLE DB programozását. Egy mutatók nélküli, objektumorientált felületet nyújt, ami használatát a script nyelvekből is lehetővé teszi, így ideális eszköz webfejlesztők számára.

Az ADO eddig 3 fő változatot élt meg: 1.0, 1.5, 2.0. Az első kiadás az RDO funkcióinak egy részhalmaza volt, és azok a fejlesztők örültek neki, akik IIS alá fejlesztettek ASP-vel. Az 1.5 kiadás az IIS 4.0-val illetve az IE4-gyel érkezett, de már az MDAC (Microsoft Data Access Components) is tartalmazta. Ekkor az ADO már igazi versenytársa az RDO-nak és a DAO-nak funkcionalitásban és teljesítményben egyaránt. A legutolsó változat már olyan függvényeket is tartalmaz, amit a többiek nem.
Az ADO 2.0-t az MSADO15.DLL-ben találjuk meg. A fájl neve ugyanaz, mint az 1.5 változat esetében, de a tartalma lényegesen kibővült. Az új szolgáltatások a következők:
  • aszinkron műveletek
  • Recordset persistence
  • Hierarchikus recordset for data shaping



ADO

Említettük, hogy az ADO nem más, mint egy COM szerver. Mit is tud egy COM szerver? DLL-ben lakik, így a kliens alkalmazás címterében futhat, ami a teljesítmény szempontjából előnyös. Automation interface-e van, ezért bármilyen alkalmazásból könnyedén megszólítható. Támogatja a típus könyvtárat (type library), és így könnyedén utánanézhetünk, milyen objektumokat és funkciókat is használhatunk. Ezek a tulajdonságok az ADO esetében is teljesülnek. A C:\Program Files\Common Files\System\ADO könyvtárban megtaláljuk az MSADO15.DLL fájlt. Dual interface-e van és a típus könytárát is könnyen elérhetjük a Delphi-ből. Válasszuk a Project menü Import Type Library pontját, és a megjelenő
listából keressük ki a 'Microsoft ActiveX Data Object 2.6 Library (Version
2.6)' nevű objektumot. A 2.6 verziószám helyett értelemszerűen más szám is
állhat. A Class names ablakban láthatjuk a megvalósított objektumok nevét. A
Create unit gombot megnyomva egy, a project-ünkhöz kapcsolt unit-ban megkapjuk
a típuskönyvtárat.

Hogyan szerezhetünk ADO-t? Valószínűleg már szereztünk is. Az 1.5 változat a Windows NT 4.0 Option Pack -jén volt megtalálható, a 2.0 a Visual Studio 6.0-val vagy az IE5-tel érkezett, a 2.1 része a Windows 2000-nek. A legfrissebb változat telepítéséhez keressük fel a http://www.microsoft.com/data/ weboldalt, és töltsük le az MDAC (Microsoft Data Access Components) egyik verzióját. Az MDAC e cikk írásakor a 2.6 verziónál tart. A 2.1-es változat magyar nyelven is letölthető. Ez azt jelenti, hogy a release notes-okat magyarul olvashatjuk, illetve a hibaüzenetek is magyarul jelennek meg.

Szerencsére az MDAC egy változata (2.1) a Delphi 5 CD-n is rajta van az MDAC könyvtárban, az MDAC_TYP.EXE programot kell indítani. Az exe-t saját telepítő programunkból is meghívhatjuk, akár észrevétlenül is (silent mode):
mdac_typ.exe /q:a /c:"setup.exe /qt" 
Az ADO telepítéséhez valamilyen Windows változatot (Windows 9x, NT Server 4.0 3-as SP-kel, NT Workstation 4.0) futtató számítógép szükséges minimum 14MB szabad winchester kapacitással. 32 MB RAM ajánlott. A telepítés teljesen automatikus.

Az ADO használatához általános esetben szükséges valamilyen programozási környezet, amely kezelni tudja az Automation objektumokat. Ilyen lehet pl. az IIS 3 vagy magasabb verzió és az Active Server Pages, a Microsoft Office vagy a Microsoft Visual Studio. Jelen esetben a Delphi.


AdoExpress

A Delphi ADO komponensei az ADO objektumok funkcionalitását próbálják meg a Delphi komponens hierarchiájába illeszteni. Ezen VCL komponensek halmaza az ADOExpress palettán találhatók. Az ADOExpress objektumai remekül illeszkednek a Delphi adatkezelési modelljébe, ami azt jelenti, hogy az ADO palettán megtaláljuk a BDE alapú Database, Table, Query és StoredProc objektumok ADO megfelelőit. A vizuális komponensek, mint a DBGrid vagy DBEdit egy DataSource elemen keresztül ugyanúgy csatlakozhatnak ADO komponensekre, mint azok DBE párjaira.

Az ADO legfontosabb objektumai a Connection, Command és a Recordset objektum. Ezek direkt Delphi reprezentációi a TADOConnection, TADOCommand és a TADODataset komponensek. Ezen kívül vannak még más ADO objektumok is, mint a Properties vagy Fields objektum, de általában ezek direkt megszólítására nincs szükség, ezért a Delphi-ben komponensként nem jelennek meg.

Röviden nézzük át az ADOExpress komponenseket és azok feladatát.
  • ADOConnection: Adatbáziskapcsolat létrehozása ADO adattárakkal. BDE megfelelője a TDatabase.
  • ADOCommand: Direkt SQL parancsok kiadása az ADO adattárra, eredményhalmaz nélkül. BDE megfelelője lehet a TDatabase.Execute vagy a TQuery.ExecSQL metódus.
  • ADODataset: Általános adatelérési komponens ADO adattáblák elérésehez, BDE megfelelője nincs.
  • ADOTable: ADO adattárak tábláinak elérésére szolgáló komponens, BDE párja a TTable.
  • ADOQuery: Egy vagy több tábla adatainak SQL utasításon keresztül történő elérésére szolgáló komponens, BDE párja a TQuery.
  • ADOStoredProc: Tárolt eljárás hívása, BDE megfelelője a TStoredProc.
  • RDSConnection: Többrétegű alkalmazások írásakor használható, az eredményhalmaz mozgatását végzi különböző folyamatok vagy számítógépek között. Nincs BDE megfelelője.


A felsorolt komponensek mindegyikével egy-egy fejezetnyit foglalkozunk a cikksorozat további részeiben.

ADO paletta cikksorozat