Image
18.5.2016 0 Comments

Databázy II / 8.časť

Späť na úvod >> Späť na seriál

V predošlej časti sme si ukazovali pripojenie na MySQL server pomocou ODBC. Ako klienta sme použili pomerne známy program MS Excel, kde sa zobrazila tabuľka a k nej sme urobili graf. Toto sa hodí na prezentáciu dát, ktoré sú už vytvorené, lebo Excel nedovoľuje dáta uložené na MySQL serveri modifikovať.
Na túto prácu sú podstatne vhodnejšie vyššie programovacie jazyky, ako Pascal, Delphi, C, C++ a iné.
V týchto jazykoch je možné vytvoriť aplikáciu, ktorá bude k dátam pristupovať dvoma spôsobmi: buď cez ODBC, alebo cez API pomocou konkrétnych komponentov v tom-ktorom jazyku.

VÝHODY A NEVÝHODY ODBC. Použitie spojenia cez ODBC má niekoľko výhod aj nevýhod:
Výhodou spojenia cez ODBC je, že vytvorený projekt môžeme bez úprav použiť na hociktorý SQL server. Stačí použiť iba správny ODBC driver k žiadanému SQL serveru. Teda ak vytvoríme aplikáciu, ktorá bude pristupovať k serveru MySQL (pomocou MyODBC), a po určitom čase budeme chcieť prejsť na iný SQL server, napr. PosgreSQL, Informix alebo Oracle, stačí, ak použijeme príslušný ODBC driver a aplikáciu nie je potrebné znova vytvoriť. Náš používateľ vlastne ani nevie (a asi ho to ani nezaujíma), na ktorý SQL server pristupuje, on (alebo ona) potrebuje účtovať, tlačiť doklady, tvoriť výstupné zostavy a podobne. Aplikácia je z jeho pohľadu úplne rovnaká, zvykol si na ňu, dokonca ak mu vyhovuje, nemá rád akékoľvek zmeny (vlastná skúsenosť). No a my máme zjednodušenú prácu...

Asi jedinou nevýhodou použitia ODBC je určité spomalenie prístupu k dátam oproti použitiu prístupu cez API. Je to vlastne logické. Aplikácia pošle SQL dopyt príslušnému ODBC, ktorý to musí transformovať na jazyk zodpovedajúci konkrétnemu SQL serveru. Ten príkaz vykoná, pošle odpoveď späť ODBC, ten ju transformuje do podoby pre klientsku aplikáciu. Nemusíme sa však báť, to spomalenie nie je pri menej rozsiahlych databázach obmedzujúce a ešte stále je niekoľko možností, ako to „vyladiť“!
Teraz si ukážeme, ako vytvoríme aplikáciu v Delphi od Borlandu, kde použijeme spojenie cez ODBC.

Predpokladajme, že máme nainštalované MyODBC tak, ako sme to robili v predchádzajúcich častiach. Teraz si  vytvoríme cvičné spojenie mysql drivera s názvom linux-mysql. (môžeme si ho, samozrejme, pomenovať inak). Prejdeme do Ovládacích panelov, klikneme na ikonku 32bit ODBC, klikneme na tlačidlo Add... , vyberieme driver MYSQL a pokračujeme tlačidlom Dokončiť. Zobrazí sa okno TDX mysql Driver default configuration a vyplníme ho obdobne, ako je na obr. 1.

Ak máme MySQL server spustený na tom istom počítači, kde bude bežať aj naša klientska aplikácia, vyplníme do položky MySQL host slovo localhost. (Ja používam MySQL server na Linuxe, kde IP adresa počítača je 192.168.10.129, a klientsku aplikáciu budem tvoriť na počítači s Windows, ktorý má adresu IP 192.168.10.130.).
Toto spojenie využijeme pri našom demonštračnom príklade. Ak chceme pracovať s Delphi, musíme mať vhodnú verziu. To je taká verzia, ktorá na lište komponentov obsahuje záložky Data Access a Data Controls  (obr. č. 2).

Niektoré verzie, napr. Borland Dephi 6 Personal alebo Kylix Open Edition (ktoré sú zadarmo), tieto komponenty nemajú. Poďme na to postupne:
Demonštračný príklad. Vytvorme aplikáciu v Delphi, ktorá sa spojí pomocou ODBC k serveru MySQL k databáze KNIZNICA a bude zobrazovať dáta z tabuľky kniha v okne na formulári. Chceme, aby bol prístup autentizovaný (teda iba po zadaní správneho mena a hesla) a aby sa jednotlivými položkami – záznamami – dalo listovať.
Stačí, nič viac (zatiaľ!). Predpokladom sú vaše aspoň základné znalosti o Delphi a o práci v tomto programovacom jazyku a jeho vývojovom prostredí.

Tvorba základného formulára. Spustíme Delphi. Na jeho formulár položíme tieto komponenty zo záložky Data Access:

  • Database1 typu TDatabase
  • Query1 typu TQuery
  • DataSource1 typu TDataSource

tak ako je to na obrázku č. 3.

Zo záložky Data Controls na formulár doplníme komponenty:

  • DBGrid1 typu TDBGrid
  • DBNavigator1 typu TDBNavigator

a zo záložky Additional pridáme komponent BitBtn1 typu TBitBtn, tak ako je to na obrázku č. 4.

OPIS JEDNOTLIVÝCH KOMPONENTOV. Database1 typu TDatabase poskytuje diskrétny prístup cez spojenie k jednoduchej databáze v databázovej aplikácii. Klikneme na tento komponent vo formulári a v Object Inspectore v záložke Properties (= vlastnosti) sa presunieme na prvú vlastnosť AliasName. Klikneme na malú šípočku vpravo, čím rozbalíme roletové menu ponúkaných ODBC spojení (obr. č. 5).

Vyberieme nami vytvorené spojenie linux-mysql. (Teda to, ktoré sme vytvorili opísaným spôsobom). Vyplníme položku DatabaseName, ktorú nazveme napr. pcrevue (obr. č. 6).

Teraz klikneme na vlastnosť Connected a nastavíme ju na hodnotu True. Objaví sa prihlasovacie okno ako na obrázku č. 7.

Zadáme príslušné meno, heslo a potvrdíme tlačidlom OK. Ak sme zadali správne údaje, teda správne meno a správne heslo, ktoré SQL server pozná a na základe ktorých umožní prístup, prihlasovacie okno zhasne bez vyhlásenia chyby. To je dôkazom, že sa podarilo nadviazať spojenie s SQL serverom. Ak sme zadali niektorú položku chybne, dostaneme chybové hlásenie. Príklad takéhoto hlásenia je na obr. č. 8.

Z hlásenia vidíme, kde sa asi stala chyba – máme zakázaný prístup. Treba chybu vyhľadať a odstrániť.
(Poznámka: Tu sa robia tieto najčastejšie chyby: buď bolo zadané nesprávne meno, alebo heslo, alebo na serveri MySQL nemá prihlasujúci sa používateľ definované prístupové práva, alebo je nesprávne vyplnená karta drivera ODBC z obr. č. 1).
Delphi má jednu výbornú vlastnosť. Už počas tvorby aplikácie (teda ešte pred samotnou kompiláciou!) v prostredí IDE umožňuje niektoré dôležité činnosti, ako je vytvorenie spojenia do databázy, prístup k tabuľkám, zobrazenie dát a podobne. Túto fantastickú vlastnosť využijeme, opíšeme si to neskôr. Takto môžeme odhaliť chyby skôr, ako dopracujeme celý projekt.
Ak sa teda spojenie podarilo, v položke Connected Object Inspectora sa zobrazí hodnota True.
Teraz klikneme na komponent Query1.
Query1 typu TQuery vykonáva query (= dopyt) na pripojené dáta.
Object Inspectore vlastností Query1 klikneme na šípočku položky (vlastnosti) DatabaseName a vyberieme z roletového menu položku pcrevue.
Povedali sme si, že komponent Query vykonáva dopyty, teda SQL príkazy k danému SQL serveru. Preto klikneme v Object Inspectore na vlastnosť SQL. Zobrazí sa okno String list editor. V tomto okne zadáme požadovaný SQL príkaz. Ale aký to bude?

Povedali sme si, že chceme prezerať záznamy v tabuľke kniha. Takže SQL príkaz bude takýto:

       select * from kniha

Poznávame ho? Ale samozrejme, veď je to výpis všetkých záznamov z tabuľky kniha!
Tento SQL príkaz napíšeme do okna String list editora (obr. 9).

Klikneme na OK. Prejdeme na prvú vlastnosť Active a obdobným spôsobom zvolíme hodnotu True. Ak Delphi nevyhlási chybu, všetko pokračuje podľa plánu. V prípade chyby ju analyzujeme a odstránime. Skontrolujeme Object Inspector, či je všetko zachované tak, ako sme nastavili, a prejdeme na komponent DataSource1.
DataSource1 typu TDataSource tvorí akési rozhranie medzi komponetmi na vytvorenie spojenia k dátam (Database, Query) a komponentmi na manipuláciu s takto získanými dátami (DBGrid, DBNavigator).
Inak povedané, DataSource1 sa nadviaže na komponent Query1 a na komponent DataSource1 sa nadviaže komponent DBGrid1.
Klikneme teda na komponent DataSource1. V Object Inspectore klikneme na vlastnosť DataSet a vyberieme (ponúkanú) hodnotu Query1 (obr. č. 10).

Pristúpime k DBGrid1. DBGrid1 typu DBGrid  zobrazuje a manipuluje s dátami, získanými z dátového zdroja. Preto vo vlastnostiach DBGrid1 v položke DataSource nastavíme hodnotu DataSource1.
Aha, čo sa to zrazu stalo? V mriežke DBGrid1 sa objavili skutočné, teda ostré dáta z tabuľky kniha (obr. č. 11).

A to je tá výborná vec v Delphi, ktorú som už spomínal!
Aby sme mohli listovať jednotlivými záznamami dopredu, dozadu, na začiatok alebo na koniec, na to použijeme komponent BDNavigator1. Stačí, ak v jeho vlastnostiach aktivujeme položku DataSource a nastavíme hodnotu na DataSource1. Je to identické ako v prípade komponentu DBGrid. Nemusíme mať zobrazené všetky tlačidlá, ktoré DBNavigator ponúka. Stačí, ak vo vlastnosti VisibleButtons aktivujeme položky nbFirst, nbPrior, nbNext a nbLast. Už názvy hovoria, aké sú ich funkcie. Všimnime si, ako sa zmenia samotné tlačidlá DBNavigarora.
Ostáva posledný komponent BitBtn1 typu TBitBtn. Je to grafické tlačidlo. V podstate už nemá žiadnu funkciu zviazanú priamo s databázovým strojom. My ju však použijeme ako ukončovacie tlačidlo celej našej aplikácie. Viem, viem, budete namietať, že aplikácia sa dá uzavrieť aj kliknutím na krížik v jej pravom hornom rohu, tak ako všetky oknoidné aplikácie. No ale uznajte, tlačidlo je efektnejšie. Takže v jeho vlastnostiach zmeníme tieto položky:
Položku Kind zmeníme na hodnotu bkClose, ktorá zabezpečí ukončenie celej aplikácie. Položku Caption zmeníme na &Koniec, čím zmeníme popis tlačidla.
Úplne na záver klikneme na základný formulár Form1 typu TForm, kde upravíme vlastnosť Caption. Napíšeme do nej text Prezerač tabuľky kniha“, čím zmeníme aj titulok celej aplikácie. Výsledok vidíme na obrázku č. 12.

Nastala záverečná etapa – kompilácia. Takto vytvorený program skompilujeme. Ak sme neurobili nijakú chybu, preklad prebehne v poriadku a vznikne hotová aplikácia ako .exe súbor.
Skompilovanú aplikáciu spustíme. Vidíme, že sa zobrazí vstupné dialógové okno, ktoré požaduje zadanie mena a hesla. Po správnom zadaní sa zobrazí hlavná obrazovka, tak ako ju vidíme na obr. č. 13.

Všimnime si, že na skompilovanej aplikácii nevidieť tzv. neviditeľné (non-visible) komponenty, ako sú DataSource, Query alebo Database. Veď ani nie je potrebné, aby ich bolo vidieť, stačí, ak sme nastavili ich vlastnosti podľa našich potrieb.
Môžeme byť právom na seba hrdí. Urobili sme funkčnú aplikáciu, ktorá je portabilná na všetky počítače so systémom WindowsXX. Stačí, ak ju tam nakopírujeme, nainštalujeme MyODBC a správne nastavíme. A len tak medzi nami, toto sa dá krásne zautomatizovať, čo zruční delfisti vedia, ale to nie je cieľom tejto lekcie.
Už počujem vaše hlasy: „Ale my nechceme len prezerať! My chceme pridávať, editovať, mazať! Len tak je aplikácia to pravé orechové!“
Máte pravdu. Táto časť bola iba ukážková, veľmi jednoduchá (aj keď ani jej nemožno uprieť určitú funkčnosť!).
Ako sa robia ostatné „kúzla“ s dátami, to si povieme nabudúce.

A na okraj: zdrojové texty tohto príkladu si môžete stiahnuť z mojej webovej stránky www.mior.host.sk.

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá