Uporaba Delphi poizvedb z ADO

click fraud protection

Komponenta TADOQuery zagotavlja Delphi razvijalci zmožnost pridobivanja podatkov iz ene ali več tabel iz ADO baza podatkov z uporabo SQL.

Ti stavki SQL so lahko izjave DDL (jezik definicije podatkov), kot so CREATE TABLE, ALTER INDEX itd. Ali pa so lahko izjave DML (jezik manipulacije podatkov), kot so SELECT, UPDATE in DELETE. Najpogostejša izjava pa je stavka SELECT, ki ustvari pogled, podoben tistemu, ki je na voljo s pomočjo komponente Tabela.

Opomba: čeprav je izvajanje ukazov s komponento ADOQuery možno, ADOCommandV ta namen je primernejša komponenta. Najpogosteje se uporablja za izvajanje ukazov DDL ali za izvedbo shranjenega postopka (čeprav bi morali uporabitiTADOStoredProc za take naloge), ki ne vrne nabora rezultatov.

SQL, ki se uporablja v komponenti ADOQuery, mora biti sprejemljiv za gonilnik ADO, ki ga uporabljate. Z drugimi besedami, poznajte razlike med pisanjem SQL med MS MS in MS SQL.

Kot pri delu s komponento ADOTable, do podatkov v bazi podatkov dostopate s povezavo v shrambi podatkov, ki jo je komponenta ADOQuery vzpostavila z uporabo njene

instagram viewer
ConnectionString lastnost ali prek ločene komponente ADOConnection, navedene v Povezavapremoženje.

Če želite narediti obrazec Delphi, ki lahko pridobi podatke iz baze podatkov Access s komponento ADOQuery, preprosto spustite vse povezane komponente dostopa do podatkov in podatkov, ki se zavedajo podatkov, in vzpostavijo povezavo, kot je opisano v prejšnjih poglavjih tega seveda. Potrebujemo komponente za dostop do podatkov: DataSource, ADOConnection, skupaj z ADOQuery (namesto ADOTable) in eno komponento, ki se zaveda podatkov, kot je DBGrid.
Kot smo že pojasnili, je s pomočjo Object Inspectorja povezavo med temi komponentami postavila na naslednji način:

DBGrid1.DataSource = DataSource1
DataSource1.DataSet = ADOQuery1
ADOQuery1.Connection = ADOConnection1
// sestavite ConnectionString
ADOConnection1.ConnectionString = ...
ADOConnection1.LoginPrompt = Lažno

Izvedba poizvedbe SQL

Komponenta TADOQuery nima a Ime tabelelastnine, kot to počne TADOTable. TADOQuery ima imenovano lastnost (TStrings) SQL ki se uporablja za shranjevanje stavka SQL. Vrednost lastnosti SQL lahko nastavite z Object Inspectorjem v času načrtovanja ali s kodo med izvajanjem.

V času načrtovanja pokličite urejevalnik lastnosti za SQL s klikom na gumb elipse v Inšpektorju objektov. Vnesite naslednji stavek SQL: "IZBERI * OD avtorjev".

Stavek SQL se lahko izvede na enega od dveh načinov, odvisno od vrste stavka. Izjave Jezik definicije podatkov se na splošno izvajajo z ExecSQL metoda. Če želite na primer izbrisati določen zapis iz določene tabele, lahko napišete stavek DELETE DDL in poženete poizvedbo z metodo ExecSQL.
(Navadni) stavki SQL se izvajajo z nastavitvijo TADOQuery. Aktivno lastnina do Prav ali s klicem naOdprto metoda (bistveno enaka). Ta pristop je podoben pridobivanju podatkov tabele s komponento TADOTable.

Med izvajanjem se lahko stavek SQL v lastnosti SQL uporabi kot kateri koli objekt StringList:

z ADOQuery1 začnite Zapri; 
SQL.Clear;
SQL.Add: = 'IZBERI * IZ avtorjev' SQL.Add: = 'NAROČI PO avtorju DESC' Odpri;
konec;

Zgornja koda med izvajanjem zapre nabor podatkov, izprazni niz SQL v lastnosti SQL, dodeli nov ukaz SQL in aktivira nabor podatkov s klicanjem metode Open.

Upoštevajte, da ustvarjanje obstojnega seznama predmetov polja za komponento ADOQuery nima smisla. Naslednjič, ko pokličete metodo Open, je SQL lahko tako različen, da se lahko spremeni celoten niz vloženih imen (in vrst). Seveda ni tako, če uporabljamo ADOQuery za pridobivanje vrstic iz samo ene tabele s konstantnim naborom polj - in dobljeni niz je odvisen od dela WHERE v stavku SQL.

Dinamična poizvedba

Ena izmed velikih lastnosti komponent TADOQuery je Parame premoženje. Parametrizirana poizvedba je tista, ki omogoča prilagodljiv izbor vrstic / stolpcev z uporabo parametra v stavku WHERE stavka SQL. Lastnost Params omogoča nadomestljive parametre v vnaprej določenem stavku SQL. Parameter je rezervirano mesto za vrednost v stavku WHERE, definirano tik pred odpiranjem poizvedbe. Če želite v poizvedbi določiti parameter, uporabite dvopičje (:) pred imenom parametra.
V času načrtovanja uporabite objektni inšpektor, da lastnost SQL nastavite na naslednji način:

ADOQuery1.SQL: = 'IZBERI * IZ aplikacij, KJE tip =: apptype'

Ko zaprete okno urejevalnika SQL, odprite okno Parameters s klikom na gumb elipse v Inšpektorju objektov.

Parameter v prejšnjem stavku SQL je poimenovanapetit. Vrednosti parametrov v zbirki Params lahko nastavimo v času načrtovanja prek pogovornega okna Parameters, vendar bomo večino časa spreminjali parametre med izvajanjem. V pogovornem oknu Parameters lahko določite vrste podatkov in privzete vrednosti parametrov, uporabljenih v poizvedbi.

V času izvajanja lahko parametre spremenite in poizvedbo znova izvedete za osvežitev podatkov. Za izvedbo parametrizirane poizvedbe je treba pred izvedbo poizvedbe predložiti vrednost za vsak parameter. Za spremembo vrednosti parametra uporabljamo bodisi lastnost Params bodisi metodo ParamByName. Na primer, glede na stavek SQL kot zgoraj, lahko med izvajanjem uporabimo naslednjo kodo:

z ADOQuery1 se začnejo
Zapri;
SQL.Clear;
SQL.Add ('SELECT * FROM Applications WHERE type =: apptype');
ParamByName ('apptype') Vrednost: = 'multimedija';
Odprto;
konec;

Tako kot pri delu s komponento ADOTable, ADOQuery vrne niz ali zapise iz tabele (ali dveh ali več). Krmarjenje po naboru podatkov poteka z enakim naborom metod, kot je opisano v poglavju "Za podatke v naborih podatkov".

Navigacija in urejanje poizvedbe

Na splošno komponente ADOQuery ne bi smeli uporabljati, ko se izvaja urejanje. Poizvedbe na osnovi SQL se večinoma uporabljajo za namene poročanja. Če vaša poizvedba vrne niz rezultatov, je včasih mogoče urediti vrnjeni nabor podatkov. Nabor rezultatov mora vsebovati zapise iz ene tabele in ne sme uporabljati nobenih funkcij agregata SQL. Urejanje nabora podatkov, ki ga je vrnil ADOQuery, je enako kot urejanje nabora podatkov ADOTAble.

Primer

Če si želite ogledati nekaj akcije ADOQuery, bomo navedli majhen primer. Naredimo poizvedbo, ki jo lahko uporabimo za pridobivanje vrstic iz različnih tabel v bazi podatkov. Za prikaz seznama vseh tabel v bazi podatkov lahko uporabimo GetTableNamesmetoda ADOConnection sestavni del. GetTableNames v dogodku OnCreate obrazca napolni ComboBox z imeni tabel, gumb pa uporabi za zapiranje poizvedbe in ponovno ustvarjanje za pridobivanje zapisov iz izbrane tabele. Obdelovalci dogodkov morajo biti videti:

postopek TForm1.FormCreate (Pošiljatelj: TObject);
začeti
ADOConnection1.GetTableNames (ComboBox1.Items);
konec;
postopek TForm1.Button1Click (Pošiljatelj: TObject);
var tblname: string;
začeti
če ComboBox1.ItemIndex potem Izhod;
tblname: = ComboBox1.Items [ComboBox1.ItemIndex];
z ADOQuery1 se začnejo
Zapri;
SQL.Text: = 'IZBERI * IZ' + tblname;
Odprto;
konec;
konec;

Upoštevajte, da vse to lahko storite z uporabo lastnosti ADOTable in njene lastnosti TableName.

instagram story viewer