Strukturált lekérdezési nyelv használata a Delphi-ben

Az SQL (Structured Query Language) egy szabványosított nyelv az adatok meghatározásához és manipulálásához egy relációs adatbázisban. Az adatok relációs modelljével összhangban az adatbázist táblázatokként érzékeljük, viszonyok vannak a táblázatokban szereplő értékek képviselik, és az adatok egy vagy többből származtatható eredménytáblázat meghatározásával szerezhetők be alaptáblák. A lekérdezések olyan parancsnyelv formájában jelennek meg, amely lehetővé teszi kiválasztás, beillesztés, frissítés, keresés ki az adatok helyét, és így tovább.

Delphi-ben: TQuery

Ha az SQL-t fogja használni az alkalmazásokban, akkor megismerheti az TQuery összetevő. A Delphi lehetővé teszi az alkalmazások számára, hogy az SQL szintaxist közvetlenül a TQuery összetevő segítségével használják az adatok eléréséhez a Paradox és a dBase táblákból (helyi SQL használatával - az ANSI szabványos SQL részhalmaza), adatbázisok a helyi InterBase szerveren és adatbázisok a távoli adatbázisban szervereket.
A Delphi több szerver vagy tábla típus elleni heterogén lekérdezéseket is támogat (például adatok Oracle táblából és Paradox táblából). A TQuery tulajdonság neve:

instagram viewer
SQL, amely az SQL utasítás tárolására szolgál.

A TQuery beágyaz egy vagy több SQL utasítást, végrehajtja azokat, és olyan módszereket biztosít, amelyekkel manipulálhatjuk az eredményeket. A lekérdezések két kategóriába sorolhatók: azok, amelyek eredményhalmazokat hoznak létre (például a SELECT nyilatkozat), és azokat, amelyek nem (például egy UPDATEvagy INSERT nyilatkozat). Használja a TQuery alkalmazást. Nyissa meg az eredménykészletet előállító lekérdezés végrehajtásához; használja a TQuery-t. Az ExecSQL olyan lekérdezések végrehajtására szolgál, amelyek nem eredményez halmazokat.

Az SQL utasítások lehetnek statikus vagy dinamikusvagyis beállíthatók a tervezési időpontban, vagy tartalmazhatnak paramétereket (TQuery. params), amelyek futási időnként változnak. A paraméterezett lekérdezések használata nagyon rugalmas, mivel megváltoztathatja a felhasználói nézetet és az adatokhoz való hozzáférést menet közben.

Az összes futtatható SQL utasításot végrehajtás előtt el kell készíteni. Az előkészítés eredménye a nyilatkozat végrehajtható vagy működési formája. Az SQL utasítás elkészítésének módja és annak működési formájának kitartása megkülönbözteti a statikus SQL-t a dinamikus SQL-től. A tervezéskor egy lekérdezés készül és automatikusan végrehajtódik, amikor beállítja a lekérdezés komponens aktív tulajdonsága True. Futási időben egy lekérdezés készül az Előkészítés felhívásával, és végrehajtásra kerül, amikor az alkalmazás meghívja az összetevő Open vagy ExecSQL módszereit.

A TQuery kétféle eredménykészletet adhat vissza: "élő"ugyanúgy, mint a TTable komponensen (a felhasználók adatkezelővel szerkeszthetik az adatokat, és amikor a Post üzenet hívásra kerül, a változások az adatbázisba kerülnek)"csak olvasható"csak megjelenítés céljából. Élő eredménykészlet kéréséhez állítsa a lekérdezési elem RequestLive tulajdonságát True értékre, és vegye figyelembe, hogy az SQL utasításnak meg kell felelnie bizonyos speciális követelményeknek (nincs ORDER BY, SUM, AVG stb.)

A lekérdezés sok szempontból nagyon hasonlóan viselkedik, mint egy asztali szűrő, és bizonyos értelemben a lekérdezés még erősebb, mint a szűrő, mivel lehetővé teszi a hozzáférést:

  • egynél több tábla egyidejűleg ("csatlakozás" az SQL-ben)
  • a sorok és oszlopok meghatározott részhalmaza a mögöttes táblázat (ok) ból, ahelyett, hogy mindig mindegyiket visszaadná

Egyszerű példa

Most nézzük meg az SQL működését. Annak ellenére, hogy az Adatbázis-varázsló segítségével létrehozhatunk néhány SQL példát erre a példára, manuálisan is megtesszük, lépésről lépésre:

1. Helyezzen TQuery, TDataSource, TDBGrid, TEdit és egy TButton összetevőt a fő űrlapra.
2. Állítsa a TDataSource összetevő DataSet tulajdonságát Query1 értékre.
3. Állítsa a TDBGrid összetevő DataSource tulajdonságát DataSource1 értékre.
4. Állítsa a TQuery összetevő DatabaseName tulajdonságát DBDEMOS értékre.
5. Kattintson duplán a TQuery SQL tulajdonságára az SQL utasítás hozzárendeléséhez.
6. Ahhoz, hogy a rács megjelenítse az adatokat a tervezési időpontban, módosítsa a TQuery összetevő Aktív tulajdonságát True értékre.
A rács három oszlopban jeleníti meg az Employee.db tábla adatait (keresztnév, utónév, fizetés), még akkor is, ha A Employee.db 7 mezővel rendelkezik, és az eredménykészlet azokra a rekordokra korlátozódik, ahol a FirstName kezdődik „R” betűvel.

7. Most rendelje hozzá a következő kódot a Button1 OnClick eseményéhez.

eljárás TForm1.Button1Click (Feladó: TObject); kezdődik
Query1.Close;{bezárja a lekérdezést}// új SQL kifejezés hozzárendelése
Query1.SQL.Clear; Query1.SQL.Add ('Válassza EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Fizetés>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {nyitott lekérdezés + adatok megjelenítése}vég;

8. Futtassa az alkalmazást. Ha rákattint a gombra (mindaddig, amíg az 1. Szerkesztés érvényes valutaértékkel rendelkezik), a rács megjeleníti a Az EmpNo, FirstName és LastName mezők minden olyan rekordhoz, ahol a fizetés nagyobb, mint a megadott pénznem érték.

Ebben a példában egy egyszerű statikus SQL utasítást hoztunk létre élő eredménykészlettel (a megjelenített rekordok egyikét sem módosítottuk), csak megjelenítés céljából.