Brug af struktureret forespørgsel sprog i Delphi

SQL (Structured Query Language) er et standardiseret sprog til at definere og manipulere data i en relationel database. I overensstemmelse med den relationelle datamodel opfattes databasen som et sæt tabeller, relationer er repræsenteret af værdier i tabeller, og data hentes ved at specificere en resultattabel, der kan udledes fra en eller flere bundborde. Forespørgsler har form af et kommandosprog, der giver dig mulighed vælg, indsæt, opdater, find angive placeringen af ​​data osv.

I Delphi: TQuery

Hvis du vil bruge SQL i dine applikationer, bliver du meget bekendt med TQuery komponent. Delphi gør det muligt for dine applikationer at bruge SQL-syntaks direkte via TQuery-komponent for at få adgang til data fra Paradox og dBase-tabeller (ved hjælp af lokal SQL - undergruppe af ANSI-standard SQL), databaser på den lokale InterBase-server og databaser i ekstern database servere.
Delphi understøtter også heterogene forespørgsler mod mere end en server eller bordtype (for eksempel data fra en Oracle-tabel og en Paradox-tabel) .TQuery har en egenskab kaldet

instagram viewer
SQL, der bruges til at gemme SQL-sætningen.

TQuery indkapsler en eller flere SQL-sætninger, udfører dem og leverer metoder, til hvilke vi kan manipulere resultaterne. Forespørgsler kan opdeles i to kategorier: dem, der producerer resultatsæt (f.eks VÆLG erklæring), og dem der ikke gør det (f.eks. en UPDATEeller INSERT udmelding). Brug TQuery. Åben for at udføre en forespørgsel, der producerer et resultatsæt; Brug TQuery. ExecSQL for at udføre forespørgsler, der ikke producerer resultatsæt.

SQL-sætningerne kan være enten statisk eller dynamisk, det vil sige, de kan indstilles på designtidspunktet eller inkludere parametre (TQuery. Parametre), der varierer på kørselstidspunktet. Brug af parametriserede forespørgsler er meget fleksibel, fordi du kan ændre en brugers syn på og adgang til data på farten på kørselstidspunktet.

Alle eksekverbare SQL-sætninger skal være forberedt, før de kan udføres. Resultatet af forberedelsen er redegørelsens eksekverbare eller operationelle form. Metoden til at udarbejde en SQL-sætning og vedholdenheden i dens operationelle form skelner statisk SQL fra dynamisk SQL. På designtidspunktet udarbejdes og udføres en forespørgsel automatisk, når du indstiller forespørgsel komponentens aktive egenskab til sand. Ved kørsel udarbejdes en forespørgsel med et opkald til at forberede og udføres, når applikationen kalder komponentens Open eller ExecSQL-metoder.

En TQuery kan returnere to slags resultatsæt: "Direkte"som med TTable-komponent (brugere kan redigere data med datakontroller, og når der opstår et opkald til Post, sendes ændringer til databasen),"Læs kun"kun til visningsformål. For at anmode om et live-resultatsæt skal du indstille en forespørgselskomponent's RequestLive-egenskab til True og være opmærksom på, at SQL-sætning skal opfylde nogle specifikke krav (ingen BESTILLING AF, ​​SUM, AVG osv.)

En forespørgsel opfører sig på mange måder meget som et tabelfilter, og på nogle måder er en forespørgsel endnu mere kraftfuld end et filter, fordi den giver dig adgang til:

  • mere end en tabel ad gangen ("join" i SQL)
  • et angivet undergruppe af rækker og kolonner fra dets underliggende tabel (r) i stedet for altid at returnere dem alle

Enkelt eksempel

Lad os nu se nogle SQL i aktion. Selvom vi kunne bruge guiden til databaseform til at oprette nogle SQL-eksempler til dette eksempel, vil vi gøre det manuelt, trin for trin:

1. Placer en TQuery, TDataSource, TDBGrid, TEdit og en TButton-komponent på hovedformularen.
2. Indstil TDataSource-komponentens DataSet-egenskab til Query1.
3. Indstil TDBGrid-komponentens DataSource-egenskab til DataSource1.
4. Indstil TQuery-komponentens egenskab DatabaseName til DBDEMOS.
5. Dobbeltklik på SQL-egenskaben for en TQuery for at tildele SQL-sætningen til den.
6. For at få gitteret til at vise data på designtidspunktet skal du ændre TQuery-komponentens Active egenskab til True.
Risten viser data fra medarbejder.db-tabellen i tre kolonner (FirstName, LastName, Løn), selvom Employee.db har 7 felter, og resultatsættet er begrænset til de poster, hvor FirstName begynder med 'R'.

7. Tildel nu følgende kode til OnClick-begivenheden på knappen 1.

procedure TForm1.Button1Click (Afsender: TObject); begynde
Query1.Close;{luk forespørgslen}// tildele nyt SQL-udtryk
Query1.SQL.Clear; Forespørgsel1.SQL.Tilføj ('Vælg EmpNo, FirstName, LastName'); Forespørgsel1.SQL.Tilføj ('FRA Medarbejder.db'); Forespørgsel1.SQL.Tilføj ('WHERE-løn>' + Edit1.Text); Forespørgsel1.RequestLive: = sand; Query1.Open; {åben forespørgsel + visningsdata}ende;

8. Kør din ansøgning. Når du klikker på knappen (så længe Edit 1 har en gyldig valutaværdi i sig), vil gitteret vise EmpNo, FirstName og LastName felter for alle poster, hvor lønnen er større end den specificerede valuta værdi.

I dette eksempel oprettede vi en simpel statisk SQL-sætning med live resultatsæt (vi har ikke ændret nogen af ​​de viste poster) bare til visningsformål.