Používanie štruktúrovaného dotazovacieho jazyka v Delphi

click fraud protection

SQL (Structured Query Language) je štandardizovaný jazyk na definovanie a manipuláciu s údajmi v relačnej databáze. V súlade s relačným modelom údajov je databáza vnímaná ako množina tabuliek, vzťahy sú reprezentované hodnotami v tabuľkách a údaje sa získajú zadaním výsledkovej tabuľky, ktorá sa dá odvodiť z jednej alebo viacerých základné tabuľky. Dotazy majú podobu príkazového jazyka, ktorý vám umožňuje vyberte, vložte, aktualizujte, vyhľadajte umiestnenie údajov atď.

V Delphi: TQuery

Ak sa chystáte používať SQL vo svojich aplikáciách, zoznámite sa s TQuery zložkou. Delphi umožňuje vašim aplikáciám používať SQL syntax priamo prostredníctvom komponenty TQuery na prístup k údajom z tabuliek Paradox a dBase (pomocou lokálneho SQL - podmnožina štandardu ANSI SQL), databáz na lokálnom serveri InterBase a databáz na vzdialenej databáze servery.
Delphi tiež podporuje heterogénne dotazy proti viac ako jednému typu servera alebo tabuľky (napríklad údaje z tabuľky Oracle a tabuľky Paradox) .TQuery má vlastnosť s názvom SQL, ktorý sa používa na ukladanie príkazu SQL.

instagram viewer

TQuery zapuzdruje jeden alebo viac príkazov SQL, vykonáva ich a poskytuje metódy, pomocou ktorých môžeme s výsledkami manipulovať. Dotazy možno rozdeliť do dvoch kategórií: otázky, ktoré vytvárajú množiny výsledkov (napríklad a SELECT vyhlásenie) a tie, ktoré nie sú (napr UPDATEalebo INSERT výpis z účtu). Použite TQuery. Otvorené na vykonanie dotazu, ktorý vytvorí množinu výsledkov; použiť TQuery. ExecSQL na vykonávanie dotazov, ktoré nevytvárajú sady výsledkov.

Príkazy SQL môžu byť buď statický alebo dynamický, to znamená, že môžu byť nastavené v čase návrhu alebo môžu obsahovať parametre (TQuery. params), ktoré sa líšia v čase vykonávania. Používanie parametrizovaných dopytov je veľmi flexibilné, pretože v čase vykonávania môžete zmeniť zobrazenie používateľa a prístup k údajom za behu.

Všetky spustiteľné príkazy SQL sa musia pripraviť, aby sa mohli vykonať. Výsledkom prípravy je vykonateľná alebo operatívna forma výpisu. Spôsob prípravy príkazu SQL a pretrvávanie jeho operačnej formy rozlišujú statický SQL od dynamického SQL. V čase návrhu sa dotaz pripraví a vykoná automaticky, keď nastavíte dopyt Komponenta je aktívna vlastnosť na true. V čase spustenia sa dotaz pripraví s výzvou Prepare a vykoná sa, keď aplikácia zavolá metódy Open alebo ExecSQL komponenty.

TQuery môže vrátiť dva druhy výsledkových sád: "žiť„ako pri komponente TTable (používatelia môžu upravovať údaje pomocou ovládacích prvkov údajov a keď dôjde k výzve na odoslanie, zmeny sa odošlú do databázy),“iba na čítanie"iba na účely zobrazenia. Ak chcete požiadať o súpravu výsledkov, nastavte vlastnosť RequestLive komponentu dotazu na hodnotu TRUE a uvedomte si, že príkaz SQL musí spĺňať niektoré špecifické požiadavky (nie OBJEDNÁVKA, SUM, AVG atď.)

Dopyt sa chová veľmi podobne ako filter tabuľky a v niektorých ohľadoch je dotaz ešte výkonnejší ako filter, pretože umožňuje prístup:

  • viac ako jedna tabuľka naraz („pripojiť sa“ v SQL)
  • špecifikovaná podmnožina riadkov a stĺpcov z podkladovej tabuľky (tabuliek), nie vždy vracať všetky

Jednoduchý príklad

Teraz sa pozrime na nejaký SQL v akcii. Aj keď by sme mohli pomocou Sprievodcu formulárom databázy vytvoriť niekoľko príkladov SQL pre tento príklad, urobíme to ručne, krok za krokom:

1. Na hlavný formulár umiestnite komponent TQuery, TDataSource, TDBGrid, TEdit a TButton.
2. Vlastnosť DataSet komponenty TDataSource je nastavená na Query1.
3. Vlastnosť DataSource komponenty TDBGrid je nastavená na DataSource1.
4. Vlastnosť DatabaseName komponenty TQuery nastavte na DBDEMOS.
5. Dvakrát kliknite na vlastnosť SQL TQuery a priraďte mu príkaz SQL.
6. Ak chcete, aby sa údaje mriežky zobrazovali v čase návrhu, zmeňte aktívnu vlastnosť komponentu TQuery na hodnotu True.
Mriežka zobrazuje údaje z tabuľky Employee.db v troch stĺpcoch (meno, priezvisko, plat), aj keď Employee.db má 7 polí a sada výsledkov je obmedzená na tie záznamy, kde začína meno s 'R'.

7. Teraz priraďte nasledujúci kód udalosti OnClick v Button1.

procedúra TForm1.Button1Click (Sender: TObject); začať
Query1.Close;{zatvorte dopyt}// priradiť nový výraz SQL
Query1.SQL.Clear; Query1.SQL.Add ('Vyberte EmpNo, Krstné meno, Priezvisko'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Plat>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {open query + display data}koniec;

8. Spustite aplikáciu. Keď kliknete na tlačidlo (pokiaľ Edit 1 obsahuje platnú hodnotu meny), mriežka zobrazí Polia EmpNo, Krstné meno a Priezvisko pre všetky záznamy, kde Plat je vyšší ako špecifikovaná mena hodnota.

V tomto príklade sme vytvorili jednoduchý statický príkaz SQL so sadou živých výsledkov (nezmenili sme žiadne zobrazené záznamy) len na účely zobrazenia.

instagram story viewer