23
Delphi programozás Delphi programozás alapjai alapjai Nagyváradi Anett Nagyváradi Anett [email protected] [email protected] http://morpheus.pte.hu/~anettn http://morpheus.pte.hu/~anettn PTE PMMK MIT PTE PMMK MIT

Delphi programozás alapjai

  • Upload
    jeroen

  • View
    59

  • Download
    2

Embed Size (px)

DESCRIPTION

Delphi programozás alapjai. Nagyváradi Anett [email protected] 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: - PowerPoint PPT Presentation

Citation preview

Page 1: Delphi programozás alapjai

Delphi programozás Delphi programozás alapjaialapjai

Nagyváradi AnettNagyváradi [email protected]@morpheus.pte.hu

http://morpheus.pte.hu/~anettnhttp://morpheus.pte.hu/~anettn

PTE PMMK MITPTE PMMK MIT

Page 2: Delphi programozás alapjai

5. ELŐADÁS5. ELŐADÁS

Adatbázis kezelés DelphibenAdatbázis kezelés Delphiben

SQL lekérdezésekSQL lekérdezések

Page 3: Delphi programozás alapjai

SQLSQL

Structured Query LanguageStructured Query Language – – adatbázisok kezelésére szolgáló adatbázisok kezelésére szolgáló lekérdező nyelvlekérdező nyelv

Szabályok:Szabályok:Utasítások tetszés szerint tördelhetőkUtasítások tetszés szerint tördelhetőkUtasítások végét pontosvessző zárjaUtasítások végét pontosvessző zárjaKisbetű nagybetű használata egyaránt Kisbetű nagybetű használata egyaránt

lehetségeslehetségesListában lévő elemeket vesszővel választjuk elListában lévő elemeket vesszővel választjuk elEgymásba ágyazhatók az utasításokEgymásba ágyazhatók az utasítások

Page 4: Delphi programozás alapjai

SQL műveletekSQL műveletek

Matematikai: +,-,*,/, **, ^Matematikai: +,-,*,/, **, ^

Stringműveletek: +,*,||,&Stringműveletek: +,*,||,&

Bináris műveletek: NOT,AND,ORBináris műveletek: NOT,AND,OR

Összehasonlítás: <,>,=,!=, <>,NOT=Összehasonlítás: <,>,=,!=, <>,NOT=

Predikátumok: IS,LIKE,BETWEEN…Predikátumok: IS,LIKE,BETWEEN…AND,IN,AND,IN,

CHECK,WHERE,HAVINGCHECK,WHERE,HAVING

Page 5: Delphi programozás alapjai

SQL adatdefiníciós SQL adatdefiníciós utasításokutasítások

Az adatbázis szerkezetének Az adatbázis szerkezetének megváltoztatására: megváltoztatására:

CREATE CREATE - táblák létrehozása- táblák létrehozása

ALTER ALTER - táblák szerkezetének - táblák szerkezetének megváltoztatása megváltoztatása

DROP DROP - táblák törlése- táblák törlése

RENAME RENAME - táblák átnevezése- táblák átnevezése

TRUNCATE TRUNCATE - táblák csonkítása- táblák csonkítása

INSERT INSERT - új sorok beszúrása- új sorok beszúrása

DELETE DELETE -utasítás sort vagy sorokat töröl -utasítás sort vagy sorokat töröl

Page 6: Delphi programozás alapjai

SQL adatkezelő SQL adatkezelő utasításokutasítások

Adatok olvasására az adatbázisból: Adatok olvasására az adatbázisból:

SELECT - adatlekérdezésSELECT - adatlekérdezés

INSERT - adat létrehozásaINSERT - adat létrehozása

UPDATE - adat változtatásaUPDATE - adat változtatása

DELETE - adat törléseDELETE - adat törlése

Page 7: Delphi programozás alapjai

PéldákPéldák

INSERT INTO szemely VALUES (‘Szabolcs', INSERT INTO szemely VALUES (‘Szabolcs', ‘Miskolc‘, 20213456); ‘Miskolc‘, 20213456);

UPDATE szemely SET nev=‘Katalin' WHERE ID=5;UPDATE szemely SET nev=‘Katalin' WHERE ID=5;

DELETE FROM szemely WHERE ID=30DELETE FROM szemely WHERE ID=30;;

Page 8: Delphi programozás alapjai

SzintaktikaSzintaktika

SELECT oszlop neve FROM tábla neve SELECT oszlop neve FROM tábla neve WHERE feltételek WHERE feltételek ORDER ORDER BY oszlop nevek;BY oszlop nevek;

FROM - azt a relációt adja meg, amelyre a FROM - azt a relációt adja meg, amelyre a lekérdezés vonatkozik lekérdezés vonatkozik

WHERE - feltétel, a logikai kifejezés igaz WHERE - feltétel, a logikai kifejezés igaz esetén, esetén, kiválasztja a rendszer a megfelelő kiválasztja a rendszer a megfelelő rekordokatrekordokat

Page 9: Delphi programozás alapjai

SzintaktikaSzintaktika

BETWEEN...AND - operátor esetén a feltétel két BETWEEN...AND - operátor esetén a feltétel két határ által megadott intervallumban határ által megadott intervallumban találhatótalálható

SELECT * FROM tabla WHERE mez between 40 and 80;SELECT * FROM tabla WHERE mez between 40 and 80;

LIKE - operátor azt ellenőrzi, hogy az értékek LIKE - operátor azt ellenőrzi, hogy az értékek

megfelelnek-e a megadott karaktermintánakmegfelelnek-e a megadott karaktermintának

SELECT * FROM tabla WHERE nev LIKE ‘Kata'; SELECT * FROM tabla WHERE nev LIKE ‘Kata';

Page 10: Delphi programozás alapjai

SzintaktikaSzintaktika

ORDER BY - utasításrész a SELECT utasítás ORDER BY - utasításrész a SELECT utasítás utolsó utolsó része, egy vagy több oszlop része, egy vagy több oszlop szerint rendezi szerint rendezi az eredménytáblát.az eredménytáblát.

SELECT * FROM szemely SELECT * FROM szemely

WHERE varos LIKE ‘Pécs' WHERE varos LIKE ‘Pécs'

ORDER BY nev;ORDER BY nev;

Page 11: Delphi programozás alapjai

PéldákPéldák

SELECT tabla1.oszlop, tabla2.oszlop SELECT tabla1.oszlop, tabla2.oszlop FROM tabla1, tabla2 WHERE FROM tabla1, tabla2 WHERE tabla1.oszlop1=tabla2.oszlop2; tabla1.oszlop1=tabla2.oszlop2;

SELECT * FROM szemely; SELECT * FROM szemely;

SELECT nev,alkotascim,datumk,tema SELECT nev,alkotascim,datumk,tema FROM festmeny,festo WHERE FROM festmeny,festo WHERE festo.idf=festmeny.idffesto.idf=festmeny.idf and nev LIKE and nev LIKE 'Matisse%'; 'Matisse%';

Page 12: Delphi programozás alapjai

PéldákPéldák

SELECT idk,festo.idf,nev,alkotascim SELECT idk,festo.idf,nev,alkotascim FROM festmeny,festo FROM festmeny,festo WHERE festmeny.idf=festo.idf and WHERE festmeny.idf=festo.idf and datumk<1900 and tema LIKE datumk<1900 and tema LIKE 'mitológikus kép' 'mitológikus kép'

ORDER BY 4;ORDER BY 4;

SELECT * FROM festmeny WHERE tema IN SELECT * FROM festmeny WHERE tema IN ('enteriőr','csendélet');('enteriőr','csendélet');

Page 13: Delphi programozás alapjai

PéldákPéldák

SELECT COUNT (*) SELECT COUNT (*)

FROM  festo FROM  festo

WHERE nemzetiseg LIKE  'francia';WHERE nemzetiseg LIKE  'francia';

SELECT alkotascim, datumk AS SELECT alkotascim, datumk AS "készült",nev AS "festette" "készült",nev AS "festette"

FROM festmeny,festo FROM festmeny,festo

WHERE festo.idf=festmeny.idf and WHERE festo.idf=festmeny.idf and idk<20;idk<20;

Page 14: Delphi programozás alapjai

PéldákPéldák

SELECT * FROM festmeny SELECT * FROM festmeny WHERE alkotascim ~ 'puszta';WHERE alkotascim ~ 'puszta';

Beágyazott lekérdezés:Beágyazott lekérdezés:

SELECT nev,alkotascim,datumk SELECT nev,alkotascim,datumk FROM festo,festmeny FROM festo,festmeny WHERE festo.idf=festmeny.idf and WHERE festo.idf=festmeny.idf and datumk=(selectdatumk=(select MIN(datumk) from MIN(datumk) from festmeny);festmeny);

Page 15: Delphi programozás alapjai

SQL utasítások SQL utasítások DelphibenDelphiben

Delphi alkalmazásokban a Delphi alkalmazásokban a TQueryTQuery komponens segítségével futtathatunk komponens segítségével futtathatunk SQL utasításokatSQL utasításokat

Fajtái:Fajtái:DDL : Data Definition Language – DB DDL : Data Definition Language – DB

szerkezet szerkezet módosításamódosításaDML : Data Manipulation Language – DB DML : Data Manipulation Language – DB

adatainak adatainak kezelésekezeléseDCL : Data Control Language – egyéb DB DCL : Data Control Language – egyéb DB

kezelési kezelési feladatokfeladatok

Végrehajtásukat a BDE irányítjaVégrehajtásukat a BDE irányítja

Page 16: Delphi programozás alapjai

TQuery komponensTQuery komponens

Tulajdonságai:Tulajdonságai:DataBaseName – adatbázis komponens vagy DataBaseName – adatbázis komponens vagy

álnéválnévDataSource – paraméteres lekérdezéseknél, DataSource – paraméteres lekérdezéseknél,

az az adatforrás, ahonnét a paraméterek az az adatforrás, ahonnét a paraméterek értéke szármatikértéke szármatik

SQL – maga a forrásSQL – maga a forrásActive – tervezési Active – tervezési

időben látható időben látható

eredményeredmény

Page 17: Delphi programozás alapjai

TQuery komponens TQuery komponens használatahasználata

Helyezzünk el egy TQuery komponenst az Helyezzünk el egy TQuery komponenst az adatmodulonadatmodulon

DataBaseName tulajdonságát állítsuk be DataBaseName tulajdonságát állítsuk be Írjuk be az SQL utasítástÍrjuk be az SQL utasítást Ha az eredményék ki akarjuk iratni, akkor Ha az eredményék ki akarjuk iratni, akkor

irányítsunk rá egy DataSource irányítsunk rá egy DataSource komponenstkomponenst

Az adatmegjelenítési elemeket ehhez a Az adatmegjelenítési elemeket ehhez a DataSource-hoz kell majd kapcsolnunkDataSource-hoz kell majd kapcsolnunk

Page 18: Delphi programozás alapjai

SQL megadása futási SQL megadása futási időbenidőben

Dinamikus lekérdezés is generálható úgy, hogy a Dinamikus lekérdezés is generálható úgy, hogy a felhasználói igények alapján felépített lekérdezést felhasználói igények alapján felépített lekérdezést képező SQL utasítást, képező SQL utasítást, string-kéntstring-ként a a TQueryTQuery

komponens komponens SQLSQL tulajdonságába tesszük. tulajdonságába tesszük.

Pl.:Pl.:

Query1.SQL.Clear;Query1.SQL.Clear; //kitörli a meglévő utasítást//kitörli a meglévő utasítást

Query1.SQL.Add(‘Select * from tabla’);Query1.SQL.Add(‘Select * from tabla’); //hozzáfűz//hozzáfűz

Query1.Open;Query1.Open; // megnyitja // megnyitja

Page 19: Delphi programozás alapjai

SQL megadása futási SQL megadása futási időbenidőben

Ha a felhasználó által bevitt adatok alapján Ha a felhasználó által bevitt adatok alapján szeretnénk módosítani a lekérdezést:szeretnénk módosítani a lekérdezést:

procedureprocedure TForm1.Button1Click(Sender: TObject); TForm1.Button1Click(Sender: TObject);

varvar s:string; s:string;

beginbegin

s:= Edit1.Text;s:= Edit1.Text;

Query1.SQL.Clear; Query1.SQL.Clear;

Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’); Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’);

Query1.Open;Query1.Open;

endend;;

Page 20: Delphi programozás alapjai

SQL megadása futási SQL megadása futási időbenidőben

Fájlból is betölthető a lekérdezés:Fájlból is betölthető a lekérdezés:

Pl.:Pl.:procedureprocedure TForm1.Button1Click(Sender: TObject); TForm1.Button1Click(Sender: TObject);

beginbegin

Query1.SQL.LoadFromFile(‘filenev.SQL’);Query1.SQL.LoadFromFile(‘filenev.SQL’);

Query1.SQL.Open;Query1.SQL.Open;

endend;;

Page 21: Delphi programozás alapjai

Tábla tartalmának Tábla tartalmának végigjárásavégigjárása

DataModule.TáblaNév.DisableControls;DataModule.TáblaNév.DisableControls; //hozzáférés letiltás//hozzáférés letiltás

DataModule.TáblaNév.First;DataModule.TáblaNév.First; //első elemre ugrás//első elemre ugrás

While notWhile not DataModule.TáblaNév.Eof DataModule.TáblaNév.Eof do do

beginbegin

...... // utasítások megadása// utasítások megadása

DataModule.TáblaNév.Next;DataModule.TáblaNév.Next; //következő elemre ugrás//következő elemre ugrás

endend;;

DataModule.TáblaNév.EnableControls;DataModule.TáblaNév.EnableControls; //hozzáférés engedélyezés//hozzáférés engedélyezés

Page 22: Delphi programozás alapjai

Táblához hozzáfűzés Táblához hozzáfűzés futási időbenfutási időben

DataModule.TáblaNév.Append;DataModule.TáblaNév.Append;

//hozzáfűzés kezdete//hozzáfűzés kezdete

DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...;DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...; //pl. feltételben az adott mező adott típusként //pl. feltételben az adott mező adott típusként

való vizsgálatavaló vizsgálata

DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...;DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...; //adott mező értéke szerint való vizsgálata//adott mező értéke szerint való vizsgálata

DataModule.TáblaNév.Post; DataModule.TáblaNév.Post;

//utasítás végrehajtás//utasítás végrehajtás

Page 23: Delphi programozás alapjai

Link – SQL példákLink – SQL példák

http://hu.wikipedia.org/wiki/http://hu.wikipedia.org/wiki/SQL_programozási_nyelvSQL_programozási_nyelv