Korištenje strukturiranog jezika upita u Delphiju

SQL (Structured Query Language) je standardizirani jezik za definiranje i manipuliranje podacima u relacijskoj bazi podataka. U skladu s relacijskim modelom podataka, baza podataka doživljava se kao skup tablica, odnosi su predstavljeni vrijednostima u tablicama, a podaci se preuzimaju specificiranjem tablice rezultata koja se može izvesti iz jedne ili više osnovne tablice. Upiti imaju oblik naredbenog jezika koji vam omogućava odaberite, umetnite, ažurirajte, pronađite mjesto podataka, i tako dalje.

U Delphiju: TQuery

Ako ćete koristiti SQL u svojim aplikacijama, postat ćete vrlo poznati s TQuery komponenta. Delphi omogućuje vašim aplikacijama da izravno koriste SQL sintaksu putem TQuery komponente za pristup podacima iz paradox i dBase tablica (koristeći lokalni SQL - podskup ANSI standardnog SQL-a), baze podataka na lokalnom interBase poslužitelju i baze podataka na udaljenoj bazi podataka poslužiteljima.
Delphi također podržava heterogene upite protiv više vrsta poslužitelja ili tablice (na primjer, podaci iz Oracle tablice i tablice Paradox). TQuery ima svojstvo zvano

instagram viewer
SQL, koji se koristi za spremanje SQL izraza.

TQuery inkapsulira jednu ili više SQL izjava, izvršava ih i pruža metode pomoću kojih možemo manipulirati rezultatima. Upiti se mogu podijeliti u dvije kategorije: one koje proizvode skup rezultata (poput a ODABERI izjavu) i one koje to ne čine (kao što je an AŽURIRAJili UMETNUTI izjava). Koristite TQuery. Otvoreno za izvršavanje upita koji proizvodi skup rezultata; koristite TQuery. ExecSQL za izvršavanje upita koji ne proizvode skupove rezultata.

Izjave SQL-a mogu biti bilo koje statički ili dinamičan, odnosno mogu se postaviti u vrijeme dizajna ili uključivati ​​parametre (TQuery. parametri) koje se razlikuju u vremenu pokretanja. Korištenje parametriziranih upita vrlo je fleksibilno jer u vremenu trajanja možete promijeniti korisnikov pogled i pristup podacima u pokretu.

Svi izvršni SQL izrazi moraju biti pripremljeni prije nego što se mogu izvršiti. Rezultat pripreme je izvršni ili operativni oblik izjave. Način pripreme SQL izraza i trajnost njegovog operativnog oblika razlikuju statički SQL od dinamičkog SQL-a. U vrijeme dizajniranja upit se priprema i izvršava automatski kad postavite pitanje Aktivno svojstvo komponente na True. U vrijeme izvođenja, upit se priprema s pozivom na Priprema i izvršava se kada aplikacija poziva metode Open ili ExecSQL komponente.

TQuery može vratiti dvije vrste rezultata: "uživo"kao s TTable komponentom (korisnici mogu uređivati ​​podatke pomoću kontrola podataka, a kad dođe do poziva na Post, promjene se šalju u bazu podataka)"samo za čitanje"samo za prikaz. Da biste zatražili skup rezultata uživo, postavite svojstvo komponente RequestLive upita na True i budite svjesni da SQL izjava mora ispunjavati neke specifične zahtjeve (nema ORDER BY, SUM, AVG, itd.)

Upit se ponaša na mnogo načina poput filtra tablice, a na neki je način upit čak i moćniji od filtra jer vam omogućuje pristup:

  • više tablica istodobno ("pridruži se" u SQL-u)
  • određeni podskup redova i stupaca iz njegove (ih) tablice, a ne uvijek vraćajući ih

Jednostavni primjer

Sada ćemo vidjeti neke SQL na djelu. Iako bismo mogli koristiti čarobnjaka obrasca baze podataka za stvaranje nekih SQL primjera za ovaj primjer, napravit ćemo to ručno, korak po korak:

1. Na glavni obrazac stavite TQuery, TDataSource, TDBGrid, TEdit i TButton komponentu.
2. Postavite svojstvo Dataata komponente TDataSource na Query1.
3. Postavite svojstvo DataSource komponente TDBGrid na DataSource1.
4. Postavite svojstvo DatabaseName komponente TQuery na DBDEMOS.
5. Dvaput kliknite SQL svojstvo TQuery-a da biste mu dodijelili SQL izraz.
6. Da biste podatke iz mreže prikazali u vrijeme dizajniranja, promijenite svojstvo aktivne komponente TQuery u True.
Na mreži se prikazuju podaci iz tablice Employee.db u tri stupca (FirstName, LastName, Plata), čak i ako Employee.db ima 7 polja, a skup rezultata ograničen je na one zapise u kojima započinje FirstName s 'R'.

7. Sada dodijelite sljedeći kôd događaju OnClick gumba1.

postupak TForm1.Button1Click (Pošiljatelj: TObject); početi
Query1.Close;{zatvori upit}// dodijeliti novi SQL izraz
Query1.SQL.Clear; Query1.SQL.Add ('Odaberite EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('GDJE Plaća>' + Edit1.Text); Upit1.RequestLive: = istina; Query1.Open; {otvoreni upit + prikaz podataka}kraj;

8. Pokrenite svoju aplikaciju. Kada kliknete gumb (sve dok Edit 1 u sebi ima valjanu vrijednost valute), rešetka će prikazati Polja EmpNo, FirstName i LastName za sve zapise u kojima je plaća veća od navedene valute vrijednost.

U ovom primjeru stvorili smo jednostavnu statičku SQL izjavu sa skupom rezultata uživo (nismo promijenili nijedan od prikazanih zapisa) samo za potrebe prikazivanja.