Delphi päringute kasutamine ADO-ga

TADOQuery komponent pakub Delphi arendajate võimalus tuua andmeid ühest või mitmest tabelist andmebaasist ADO andmebaas kasutades SQL-i.

Need SQL-avaldused võivad olla kas DDL (Data Definition Language) avaldused, näiteks CREATE TABLE, ALTER INDEX ja nii edasi, või võivad need olla DML (Data Manipulation Language) avaldused, näiteks SELECT, UPDATE ja Kustuta. Kõige tavalisem lause on siiski SELECT, mis loob sarnase vaate, mis on saadaval tabelikomponendi abil.

Märkus. Ehkki käskude täitmine ADOQuery komponendi abil on võimalik, on ADOCommandkomponent on selleks otstarbeks sobivam. Kõige sagedamini kasutatakse seda DDL-i käskude või salvestatud protseduuri täitmiseks (isegi kui peaksite kasutamaTADOStoredProc selliste ülesannete jaoks), mis tulemuste komplekti ei tagasta.

ADOQuery komponendis kasutatav SQL peab olema kasutatava ADO draiveri jaoks vastuvõetav. Teisisõnu peaksite olema tuttav näiteks MS Accessi ja MS SQLi SQL-i kirjutamise erinevustega.

Nagu ADOTable komponendiga töötades, pääseb andmebaasi andmetele juurde andmehoidla ühenduse kaudu, mille ADOQuery komponent on loonud selle abil

instagram viewer
ConnectionString atribuuti või punktis ADConnection eraldi komponendi kaudu Ühendusvara.

Kui soovite Delphi vormi, mis võimaldab andmeid ADOQuery komponendiga Accessi andmebaasist alla laadida, loobuge lihtsalt kõigist seotud andmetele juurdepääsu ja andmetest teadlikke komponente ning looge link, nagu on kirjeldatud selle eelmistes peatükkides muidugi. Andmetele juurdepääsu komponendid: DataSource, ADOConnection ja ADOQuery (ADOTable asemel) ja üks andmeteadlik komponent nagu DBGrid on kõik, mida vajame.
Nagu juba selgitatud, määrake objekti inspektori abil link nende komponentide vahel järgmiselt:

DBGrid1.DataSource = DataSource1
DataSource1.DataSet = ADOQuery1
ADOQuery1.Connection = ADOConnection1
// ehitage ConnectionString
ADOConnection1.ConnectionString = ...
ADOConnection1.LoginPrompt = Vale

SQL-päringu tegemine

TADOQuery komponendil pole a TableNamenagu TADOTable teeb. TADOQuery'l on omadus (TStrings), mida nimetatakse SQL mida kasutatakse SQL-lause salvestamiseks. SQL-i vara väärtuse saate objektiobjekti inspektoriga määrata projekteerimise ajal või koodi kaudu käitusel.

Kujundage projekteerimise ajal SQL-i atribuutide redaktor, klõpsates objektiinspektoris ellipsi nuppu. Tippige järgmine SQL-lause: "SELECT * FROM Authors".

SQL-avaldust saab käivitada kahel viisil, sõltuvalt avalduse tüübist. Data Definition Language avaldused täidetakse tavaliselt käskudega ExecSQL meetod. Näiteks konkreetse kirje kustutamiseks konkreetsest tabelist võite kirjutada DELETE DDL-i väljavõtte ja käivitada päringu ExecSQL-i meetodiga.
(Tavalised) SQL-i käsud täidetakse TADOQuery. Aktiivne vara kuni Tõsi või helistadesAvatud meetod (põhimõtteliselt sama). See lähenemisviis sarnaneb tabeli andmete hankimisega TADOTable komponendiga.

Käivituse ajal saab SQL-i omaduses olevat SQL-i kasutada mis tahes StringList-objektina:

koos ADOQuery1-ga algavad Sulge; 
SQL.Clear;
SQL.Add: = 'SELECT * FROM autoritelt' SQL.Add: = 'ORDER autorinime DESC järgi' avatud;
lõpp;

Ülaltoodud kood sulgeb käitamisajal andmestiku, tühjendab SQL-i omaduses SQL-i stringi, määrab uue SQL-i käsu ja aktiveerib andmestiku, kutsudes Open-meetodi.

Pange tähele, et ilmselgelt pole ADOQuery komponendi jaoks alalise põllu objektide loendi loomine mõtet. Järgmisel korral avatud meetodi kutsumisel võib SQL olla nii erinev, et kogu esitatud nimede (ja tüüpide) komplekt võib muutuda. Muidugi, see pole nii, kui kasutame ADOQuery abil read ainult ühest tabelist koos pideva väljade komplektiga - ja saadud komplekt sõltub SQL-lause WHERE-osast.

Dünaamilised päringud

Üks TADOQuery komponentide suurepäraseid omadusi on Parameetrid vara. Parameetriseeritud päring võimaldab päringu paindlikku valimist rea / veeru jaoks, kasutades SQL-lause WHERE klauslis olevat parameetrit. Atribuut Params lubab eelnevalt määratletud SQL-i väljalülitatavaid parameetreid. Parameeter on WHERE-klausli väärtuse kohahoidja, mis on määratletud vahetult enne päringu avamist. Parameetri täpsustamiseks päringus kasutage parameetri nime ette koolonit (:).
Kasutage projekteerimise ajal objekti inspektorit, et seada SQL-i atribuut järgmiselt:

ADOQuery1.SQL: = 'SELECT * FROM rakendused, kuhu type =: apptype'

SQL-i redigeerija akna sulgemisel avage parameetriaken, klõpsates objektiinspektoris ellipsi nuppu.

Eelmises SQL-i parameetris antakse nimirakendustüüp. Parameetrite kogumis saame parameetrite väärtused projekteerimise ajal seadistada dialoogiboksi Parameetrid abil, kuid enamasti muudame parameetreid käitustöö ajal. Parameetrite dialoogi saab kasutada päringus kasutatud parameetrite andmetüüpide ja vaikimisi väärtuste määramiseks.

Käitusajal saab parameetreid muuta ja päringu andmete värskendamiseks uuesti täita. Parameetriseeritud päringu teostamiseks on vaja enne päringu täitmist sisestada iga parameetri väärtus. Parameetri väärtuse muutmiseks kasutame kas omadust Params või ParamByName. Näiteks, arvestades ülaltoodud SQL-lauset, võiksime käivituse ajal kasutada järgmist koodi:

koos ADOQuery1-ga algavad
Sulge;
SQL.Clear;
SQL.Add ('SELECT * FROM Applications WHERE type =: apptype');
ParamByName ('apptype'). Väärtus: = 'multimeedia';
Avatud;
lõpp;

Nagu ADOTable komponendiga töötades, tagastab ADOQuery komplekti või kirjed tabelist (või kahest või enamast). Andmekogumis liikumine toimub samade meetodikomplektide abil, mida on kirjeldatud peatükis "Andmekogude andmete taga".

Päringus navigeerimine ja redigeerimine

Üldiselt ei tohiks ADOQuery komponenti redigeerimise ajal kasutada. SQL-põhiseid päringuid kasutatakse enamasti aruandluseks. Kui teie päring tagastab tulemuste komplekti, on mõnikord võimalik tagastatud andmestikku redigeerida. Tulemuskomplekt peab sisaldama kirjeid ühest tabelist ja see ei tohi kasutada mingeid SQL-i koondfunktsioone. ADOQuery poolt tagastatud andmestiku redigeerimine on sama, mis ADOTAble'i andmekogumi redigeerimine.

Näide

Mõne ADOQuery toimingu nägemiseks kodeerime väikese näite. Teeme päringu, mida saab kasutada andmebaasi erinevate tabelite ridade toomiseks. Kõigi andmebaasides olevate tabelite loendi kuvamiseks saame kasutada nuppu GetTableNamesmeetod ADOCühendus komponent. Vormi OnCreate sündmusel olevad GetTableNames täidavad ComboBoxi tabeli nimedega ja nuppu kasutatakse päringu sulgemiseks ja selle uuesti loomiseks, et valitud tabelist kirjed kätte saada. () Sündmuste käitlejad peaksid välja nägema järgmised:

protseduur TForm1.FormCreate (saatja: TObject);
alustada
ADOConnection1.GetTableNames (ComboBox1.Items);
lõpp;
protseduur TForm1.Button1Click (saatja: TObject);
var tblname: string;
alustada
kui ComboBox1.ItemIndex, siis Exit;
tblname: = ComboBox1.Items [ComboBox1.ItemIndex];
koos ADOQuery1-ga algavad
Sulge;
SQL.Text: = 'SELECT * FROM' + tblname;
Avatud;
lõpp;
lõpp;

Pange tähele, et seda kõike saab teha ADOTablei ja selle TableName omaduse abil.