Delphi - TADOStoredProc komponens

ADO paletta 8. rész

forráskód letöltése
A cikkben az ADO komponenspaletta TADOStoredProc komponensét mutatjuk be. A komponens a BDE TStoredProc komponenshez hasonlóan tárolt eljárások hívását valósítja meg. Példaprogram

Szokás szerint a NorthWind SQL példaadatbázist használjuk a teszteléshez. A ConnectionString alapértelmezett értéke:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;
Initial Catalog=Northwind;Data Source=NALA
SQL Server esetén a Data Source paraméter értékét le kell cserélni a gazdaszámítógép nevére. Ha nem az SQL Server Northwind vagy pubs példaadatbázisához csatlakozunk, olyan adatbázist kell választanunk, amiben van tárolt eljárás, hiszen ezt akarjuk kipróbálni. Csatlakozás más adatbázishoz a ConnectionString szerkesztésével történhet.

A példaprogramban először csatlakozzunk az adatbázisra a Connect gomb megnyomásával. Csatlakozás után nyomjuk meg a Tárolt eljárások gombot, hogy az adatbázis tárolt eljárásainak neve megjelenjen az alatta lévő TListBox-ban.
ADOConnection.GetProcedureNames(lbProcs.Items);
Az eljárások nevére kattintva a paraméterek megjelennek a felső TDBGrid-ben. Ehhez a Connection objektum OpenSchema metódusát használjuk.
ADOConnection.OpenSchema(siProcedureParameters, VarArrayOf(
        [Unassigned, Unassigned, ADOStoredProc1.ProcedureName,
         Unassigned]), EmptyParam, FieldSchema);
Duplát kattintva az eljárás nevén az lefut, és az eredmény az alsó TDBGrid-ben jelenik meg. Ez csak akkor történik meg hiba nélkül, ha olyan eljárást választunk, aminek nincs bemenő paramétere. Ugyanis a komponens futási időben kapja meg az eljárás nevét, és ilyenkor a paramétereket nekünk kell létrehoznunk.

TADOStoredProc komponens

A TADOStoredProc komponens segítségével tárolt eljárásokat futtathatunk az ADO adatforrásunkon. BDE analógja a TStoredProc komponens. A tárolt eljárás nevét a ProcedureName property-ben állíthatjuk be és az ExecProc metódussal futtathatjuk. A paramétereket a Parameters nevű TParameter típusú property-n keresztül állíthatjuk be.

A Delphi szempontjából a tárolt eljárások használatának két előnye van. Először is ha az adatokon elvégzendő műveleteket arra bízzuk, aki a legjobban ért hozzá, vagyis az adatbázisszerverre, akkor biztosak lehetünk benne, hogy az adatfeldolgozás teljesítménye és sebessége sokkal jobb lesz. Másrészt az adatokat úgyis az adatbázisszerveren tároljuk, hálózati forgalmunk nagymértékben csökken, ha a táblák helyett csak a műveletek eredményét kérjük el.

A TADOStoredProc komponens létrehozása után csatlakozhatunk vele az ADO adatforrásunkra. A többi ADO dataset komponenshez hasonlóan ez itt is kétféleképpen történhet, vagy a Connection property-vel kell egy TADOConnection komponensre mutatnunk, vagy a ConnectionString property-t kell kitöltenünk. Sikeres csatlakozás után az elérhető tárolt eljárások nevét megnézhetjük egy lenyíló listában, ha a StoredProcName property-re kattintunk. Ha kiválasztunk egyet, a tárolt eljárás paraméterei automatikusan a Params property-be kerülnek. Ha az adatbázis éppen nem elérhető, a tárolt eljárás nevét és a paraméterek adatait kézzel kell beírnunk. A paramétereket nevükön kívül típusuk is jellemzi.
A Delphiben 4 féle paramétertípus ismert. Az input paramétert mi adjuk át a tárolt eljárásnak feldolgozásra. Az output paramétert a tárolt eljárásban az OUTPUT kulcsszóval definiáltuk, és az eljárástól kapunk bennük vissza értékeket. Mindkét előbbi funkciót megvalósítja az input/output típus. Végül létezik egy result típus, amibe azt az értéket kapjuk vissza, amit a tárolt eljárásban RESULT utasítással állítunk be. Ha az adatbázis elérhető, és kiválasztjuk a megfelelő tárolt eljárást, a paraméterek nevei mellett azok adattípusát is automatikusan megkapjuk. A Params tömb Value property-jének beállításával a paraméterekhez default értéket is hozzárendelhetünk. Ha a tárolt eljárás nevét csak futásidőben állítjuk be, akkor a TParam objektumok nem fognak automatikusan létrejönni, nekünk kell azokat felügyelnünk. Ehhez a TParam Create metódusát és a TParams AddParam metódusát használhatjuk.

Ha a tárolt eljárásunk adathalmazt is ad vissza eredményként, akkor az Open metódus hívásával vagy az Active property TRUE értékre állításával tudjuk megnyitni. Ha nem várunk eredményt, akkor elég az ExecProc metódust meghívni.

ADO paletta cikksorozat