230 likes | 373 Views
Delphi programozás alapjai. Nagyváradi Anett anettn@morpheus.pte.hu http://morpheus.pte.hu/~anettn PTE PMMK MIT. 5. ELŐADÁS. Adatbázis kezelés Delphiben SQL lekérdezések. SQL. Structured Query Language – adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok:
E N D
Delphi programozás alapjai Nagyváradi Anett anettn@morpheus.pte.hu http://morpheus.pte.hu/~anettn PTE PMMK MIT
5. ELŐADÁS Adatbázis kezelés Delphiben SQL lekérdezések
SQL Structured Query Language – adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: • Utasítások tetszés szerint tördelhetők • Utasítások végét pontosvessző zárja • Kisbetű nagybetű használata egyaránt lehetséges • Listában lévő elemeket vesszővel választjuk el • Egymásba ágyazhatók az utasítások
SQL műveletek Matematikai: +,-,*,/, **, ^ Stringműveletek: +,*,||,& Bináris műveletek: NOT,AND,OR Összehasonlítás: <,>,=,!=, <>,NOT= Predikátumok: IS,LIKE,BETWEEN…AND,IN, CHECK,WHERE,HAVING
SQL adatdefiníciós utasítások Az adatbázis szerkezetének megváltoztatására: CREATE - táblák létrehozása ALTER - táblák szerkezetének megváltoztatása DROP - táblák törlése RENAME - táblák átnevezése TRUNCATE - táblák csonkítása INSERT - új sorok beszúrása DELETE -utasítás sort vagy sorokat töröl
SQL adatkezelő utasítások Adatok olvasására az adatbázisból: SELECT - adatlekérdezés INSERT - adat létrehozása UPDATE - adat változtatása DELETE - adat törlése
Példák INSERT INTO szemely VALUES (‘Szabolcs', ‘Miskolc‘, 20213456); UPDATE szemely SET nev=‘Katalin' WHERE ID=5; DELETE FROM szemely WHERE ID=30;
Szintaktika SELECT oszlop neve FROM tábla neve WHERE feltételek ORDER BY oszlop nevek; FROM - azt a relációt adja meg, amelyre a lekérdezés vonatkozik WHERE - feltétel, a logikai kifejezés igaz esetén, kiválasztja a rendszer a megfelelő rekordokat
Szintaktika BETWEEN...AND - operátor esetén a feltétel két határ által megadott intervallumban található SELECT * FROM tabla WHERE mez between 40 and 80; LIKE - operátor azt ellenőrzi, hogy az értékek megfelelnek-e a megadott karaktermintának SELECT * FROM tabla WHERE nev LIKE ‘Kata';
Szintaktika ORDER BY - utasításrész a SELECT utasítás utolsó része, egy vagy több oszlop szerint rendezi az eredménytáblát. SELECT * FROM szemely WHERE varos LIKE ‘Pécs' ORDER BY nev;
Példák SELECT tabla1.oszlop, tabla2.oszlop FROM tabla1, tabla2 WHERE tabla1.oszlop1=tabla2.oszlop2; SELECT * FROM szemely; SELECT nev,alkotascim,datumk,tema FROM festmeny,festo WHERE festo.idf=festmeny.idfand nev LIKE 'Matisse%';
Példák SELECT idk,festo.idf,nev,alkotascim FROM festmeny,festo WHERE festmeny.idf=festo.idf and datumk<1900 and tema LIKE 'mitológikus kép' ORDER BY 4; SELECT * FROM festmeny WHERE tema IN ('enteriőr','csendélet');
Példák SELECT COUNT (*) FROM festo WHERE nemzetiseg LIKE 'francia'; SELECT alkotascim, datumk AS "készült",nev AS "festette" FROM festmeny,festo WHERE festo.idf=festmeny.idf and idk<20;
Példák SELECT * FROM festmeny WHERE alkotascim ~ 'puszta'; Beágyazott lekérdezés: SELECT nev,alkotascim,datumk FROM festo,festmeny WHERE festo.idf=festmeny.idf and datumk=(select MIN(datumk) from festmeny);
SQL utasítások Delphiben Delphi alkalmazásokban a TQuery komponens segítségével futtathatunk SQL utasításokat Fajtái: • DDL : Data Definition Language – DB szerkezet módosítása • DML : Data Manipulation Language – DB adatainak kezelése • DCL : Data Control Language – egyéb DB kezelési feladatok Végrehajtásukat a BDE irányítja
TQuery komponens Tulajdonságai: • DataBaseName – adatbázis komponens vagy álnév • DataSource – paraméteres lekérdezéseknél, az az adatforrás, ahonnét a paraméterek értéke szármatik • SQL – maga a forrás • Active – tervezési időben látható eredmény
TQuery komponens használata • Helyezzünk el egy TQuery komponenst az adatmodulon • DataBaseName tulajdonságát állítsuk be • Írjuk be az SQL utasítást • Ha az eredményék ki akarjuk iratni, akkor irányítsunk rá egy DataSource komponenst • Az adatmegjelenítési elemeket ehhez a DataSource-hoz kell majd kapcsolnunk
SQL megadása futási időben Dinamikus lekérdezés is generálható úgy, hogy a felhasználói igények alapján felépített lekérdezést képező SQL utasítást, string-ként a TQuery komponens SQL tulajdonságába tesszük. Pl.: Query1.SQL.Clear;//kitörli a meglévő utasítást Query1.SQL.Add(‘Select * from tabla’);//hozzáfűz Query1.Open; // megnyitja
SQL megadása futási időben Ha a felhasználó által bevitt adatok alapján szeretnénk módosítani a lekérdezést: procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:= Edit1.Text; Query1.SQL.Clear; Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’); Query1.Open; end;
SQL megadása futási időben Fájlból is betölthető a lekérdezés: Pl.: procedure TForm1.Button1Click(Sender: TObject); begin Query1.SQL.LoadFromFile(‘filenev.SQL’); Query1.SQL.Open; end;
Tábla tartalmának végigjárása DataModule.TáblaNév.DisableControls;//hozzáférés letiltás DataModule.TáblaNév.First;//első elemre ugrás While not DataModule.TáblaNév.Eof do begin ...// utasítások megadása DataModule.TáblaNév.Next;//következő elemre ugrás end; DataModule.TáblaNév.EnableControls;//hozzáférés engedélyezés
Táblához hozzáfűzés futási időben DataModule.TáblaNév.Append; //hozzáfűzés kezdete DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...;//pl. feltételben az adott mező adott típusként való vizsgálata DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...;//adott mező értéke szerint való vizsgálata DataModule.TáblaNév.Post; //utasítás végrehajtás
Link – SQL példák http://hu.wikipedia.org/wiki/SQL_programozási_nyelv