A komponens segítségével SQL (Structured Query Lagguage) utasításokat futtathatunk a Delphiben irt programunkból. Az SQL-rol a korábbi adatbázis-kezelési cikkeinkben olvashattok részletesebben. Az SQL az adatbázis-szerverek leggyakrabban használt lekérdező nyelve (pl. Interbase, Sybase, Oracle), de a BDE lehetové teszi, hogy SQL utasításokat adjunk ki lokális táblákra is. (pl. dBase, Paradox, Access stb.)
A megelőző részben tett
kis kitérőnk után (aki nem emlékezne, egy konkrét példaprogramot irtunk
az addig tanultak felhasználásával, egy telefonszám nyilvántartó programot
készítettünk) folytassuk az adatelérési komponensek megismerését.
A Query Komponens
A komponens segítségével SQL (Structured
Query Lagguage) utasításokat futtathatunk a Delphiben irt programunkból.
Az SQL-ről a korábbi adatbázis-kezelési cikkeinkben olvashattok részletesebben.
Az SQL az adatbázis-szerverek leggyakrabban használt lekérdező nyelve (pl.
Interbase, Sybase, Oracle), de a BDE lehetővé teszi, hogy SQL utasításokat
adjunk ki lokális táblákra is. (pl. dBase, Paradox, Acces stb.) Lokális
táblák esetén a BDE az un. Local SQL-t használja, ami ugyan nem tartalmazza
az SQL92 szabvány összes lehetőségét, azonban azokat az utasításokat igen,
amelyekre ezeknél az adatbázisoknál szükségünk lehet. Adatbázis-szerverek
eléréséhez az ún. SQL Links csomagot kell használnunk. Delphiben készíthetünk
heterogén lekérdezéseket is, vagyis olyan lekérdezést, amelyben a táblák
különböző típusú adatbázisokból származnak. (pl. az egyik tábla egy Interbase
a másik Paradox)
A Query komponens is a TdataSet
ős leszármazottja, így az ott tárgyalt fontosabb tulajdonságok rá is érvényesek.
Amennyiben a query futtatásának hatására egy eredményhalmazt kapunk vissza
(SELECT utasítás), akkor ebben az eredményhalmazban rekordra pozícionálhatunk,
egy mező értékére kereshetünk, származtatott mezőket hozhatunk létre, mezők
jellemzőit állíthatjuk be a mezőszerkesztőben, stb.
Most pedig következzenek azok a
fontosabb tulajdonságok és metódusok, melyekről korábban még nem volt szó
a TdataSet ismertetésekor. (azaz a Query egyéni tulajdonságai)
Lehetőség
van olyan lekérdezések készítésére, melynek eredményhalmaza szerkeszthető.
(de csak akkor, ha megfelel bizonyos, az SQL92 által definiált szerkesztési
feltételeknek)
SQL
Tstrings
objektum, mely a futtatandó SQL utasítást tartalmazza
ParamCheck
Ha true,
akkor minden olyan esetben, amikor futási időben megváltozik az SQL property,
a paraméterek újra generálódnak.
Metódus
Leírás
ExecSQL
Query futtatása.
Akkor használjuk, amikor olyan SQL utasítást futtatunk, ami nem ad vissza
eredményhalmazt. Ellenkező esetben az Open metódust használjuk.
Prepare
Hatására
a BDE vagy az adatbázis-server előre lefoglalja a query futtatásához szükséges
erőforrásokat, így a query gyorsabb lesz.
UnPrepare
A Prepare-re
lefoglalt erőforrások felszabadítására szolgál.
A Query komponens használata
szerkesztési időben
Egy példán keresztül fogjuk megnézni,
hogy hogyan is kell használni a query komponenst.
Tegyünk egy Query komponenst a form-ra.
Állítsuk be a DatabaseName tulajdonságot.
Itt megadhatunk aliast, vagy egy könyvtárat, amely az adatbázisfájlokat
tartalmazza lokális adatbázisok esetén, illetve egy Database
komponens nevét (később lesz róla szó, adatbázis-szerverekehez való csatlakozásnál
fogjuk használni) amennyiben azt korábban elhelyeztük a form-on. Jelen
esetben állítsuk be a már jól ismert DBDEMOS aliast.
Az SQL property-ben kell megadnunk
azt az SQL utasítást, amit futatni szeretnénk. Kattintsunk kétszer az SQL
property-re, erre bejön egy ablak, ahova beírhatjuk az utasításunkat. Jelen
esetben ez nagyon egyszerű lesz, az animals.dbf tábla adatait jelenítjük
meg.
Erre a következő SQL utasítás szolgál:
SELECT * FROM animals
Amennyiben a Query-nk egy lekérdezést
tartalmaz, és annak az eredményhalmazát meg akarjuk jeleníteni a képernyőn,
akkor még szükségünk van egy adatforrás és egy adatmegjelenítési komponensre
(pl. DBGrid) is. Tehát tegyünk egy DBGrid és egy DataSource komponenst
a formra és a megfelelő tulajdonságaikat állítsuk be a már korábban megismert
módon.
A Query futtatására többféle lehetőségünk
is van. Ha már szerkesztési időben szeretnénk látni egy lekérdezés eredményét,
akkor az Active property-t állítsuk true-ra. Futási időben, ha a
Query-nk eredményhalmazt szolgáltat, akkor használjuk az Open, egyébként
pedig az ExecSQL metódust.
Tehát nincs más dolgunk, mint az Active
property true-ra állítása, és ha mindent jól csináltunk, máris meg kell
hogy jelenjenek a tábla rekordjai a DBGrid-ben.