Použití strukturovaného dotazovacího jazyka v Delphi

SQL (Structured Query Language) je standardizovaný jazyk pro definování a manipulaci s daty v relační databázi. V souladu s relačním modelem dat je databáze vnímána jako sada tabulek, vztahy jsou reprezentované hodnotami v tabulkách a data se získají zadáním výsledkové tabulky, kterou lze odvodit z jedné nebo více základní tabulky. Dotazy mají podobu příkazového jazyka, který vám umožní vyberte, vložte, aktualizujte, najděte umístění dat atd.

V Delphi: TQuery

Pokud se chystáte používat SQL ve svých aplikacích, seznámíte se s TQuery komponent. Delphi umožňuje aplikacím používat syntaxi SQL přímo prostřednictvím komponenty TQuery pro přístup k datům z tabulek Paradox a dBase (pomocí místního SQL - podmnožina standardu ANSI SQL), databází na lokálním serveru InterBase a databází na vzdálené databázi servery.
Delphi také podporuje heterogenní dotazy proti více než jednomu typu serveru nebo tabulky (například data z tabulky Oracle a tabulky Paradox) .TQuery má vlastnost nazvanou SQL, který se používá k uložení příkazu SQL.

instagram viewer

TQuery zapouzdřuje jeden nebo více příkazů SQL, provádí je a poskytuje metody, pomocí kterých můžeme s výsledky manipulovat. Dotazy lze rozdělit do dvou kategorií: dotazy, které vytvářejí sady výsledků (například a VYBRAT prohlášení) a ty, které tak neučiní (například AKTUALIZACEnebo VLOŽIT tvrzení). Použijte TQuery. Otevřít pro provedení dotazu, který vytvoří sadu výsledků; použijte TQuery. ExecSQL pro provádění dotazů, které nevytvářejí sady výsledků.

Příkazy SQL mohou být buď statický nebo dynamický, to znamená, že mohou být nastaveny v době návrhu nebo mohou obsahovat parametry (TQuery. Params), které se liší za běhu. Použití parametrizovaných dotazů je velmi flexibilní, protože můžete změnit zobrazení uživatele a přístup k datům za běhu za běhu.

Všechny spustitelné příkazy SQL musí být připraveny, než je lze provést. Výsledkem přípravy je proveditelná nebo operativní forma prohlášení. Metoda přípravy příkazu SQL a přetrvávání jeho provozní formy rozlišují statický SQL od dynamického SQL. V době návrhu je dotaz připraven a proveden automaticky, když nastavíte dotaz vlastnost Active komponenty na true. V době spuštění je dotaz připraven s voláním Prepare a proveden, když aplikace volá komponenty Open nebo ExecSQL.

TQuery může vrátit dva druhy výsledkových sad: "žít"jako u komponenty TTable (uživatelé mohou upravovat data pomocí datových ovládacích prvků a když dojde k volání na příspěvek, změny se odešlou do databáze),"pouze ke čtení"pouze pro účely zobrazení. Chcete-li požádat o živou sadu výsledků, nastavte vlastnost RequestLive komponenty dotazu na hodnotu TRUE a uvědomte si, že příkaz SQL musí splňovat některé specifické požadavky (žádné OBJEDNÁVKY, SUM, AVG atd.)

Dotaz se chová mnoha způsoby podobně jako tabulkový filtr a v některých ohledech je dotaz ještě silnější než filtr, protože umožňuje přístup:

  • více než jedna tabulka najednou ("připojit" v SQL)
  • zadaná podmnožina řádků a sloupců z podkladových tabulek, nikoli vždy vracet všechny

Jednoduchý příklad

Nyní uvidíme nějaké SQL v akci. Přestože bychom mohli použít Průvodce formulářem databáze k vytvoření několika příkladů SQL pro tento příklad, uděláme to ručně, krok za krokem:

1. Umístěte komponentu TQuery, TDataSource, TDBGrid, TEdit a TButton do hlavního formuláře.
2. Nastavte vlastnost DataSet komponenty TDataSource na Query1.
3. Nastavte vlastnost DataSource komponenty TDBGrid na DataSource1.
4. Nastavte vlastnost DatabaseName komponenty TQuery na DBDEMOS.
5. Poklepejte na vlastnost SQL TQuery a přiřaďte jí příkaz SQL.
6. Chcete-li zobrazit data mřížky v době návrhu, změňte vlastnost Aktivita komponenty TQuery na hodnotu True.
Mřížka zobrazuje data z tabulky Employee.db ve třech sloupcích (jméno, příjmení, plat), i když Employee.db má 7 polí a sada výsledků je omezena na ty záznamy, kde začíná křestní jméno s 'R'.

7. Nyní přiřaďte následující kód události OnClick Button1.

postup TForm1.Button1Click (Sender: TObject); začít
Query1.Zavřít;{zavřít dotaz}// přiřadit nový výraz SQL
Query1.SQL.Clear; Query1.SQL.Add ('Vyberte EmpNo, Jméno, Příjmení'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Plat>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {open query + display data}konec;

8. Spusťte aplikaci. Když kliknete na tlačítko (pokud má Edit 1 v sobě platnou hodnotu měny), zobrazí se mřížka Pole EmpNo, Jméno a Příjmení pro všechny záznamy, kde Plat je vyšší než zadaná měna hodnota.

V tomto příkladu jsme vytvořili jednoduchý statický příkaz SQL se sadou živých výsledků (nezměnili jsme žádný ze zobrazených záznamů) pouze pro účely zobrazení.