210 likes | 372 Views
ODBC. Autor:Matej Kulcsár Predmet:Databázove systémy. ODBC-Open database conectivity. ODBC je štandardizovaná technológia API (Application programming interface), ktorá má za úlohu poskytnúť rovnaký prístup k rôznym druhom databáz (Oracle, MySQL, ...). ODBC zahŕňa štyri komponenty:
E N D
ODBC Autor:Matej Kulcsár Predmet:Databázove systémy
ODBC-Open database conectivity ODBC je štandardizovaná technológia API (Application programming interface), ktorá má za úlohu poskytnúť rovnaký prístup k rôznym druhom databáz (Oracle, MySQL, ...). ODBC zahŕňa štyri komponenty: • Aplikácia (program) – bežiaci pod systémom Windows • ODBC manager – dynamická knižnica, ktorá obsluhuje ovládače • ODBC drivers – zabezpečujú spojenie na databázy • Zdrojové dáta (databáza)
CharakteristikaODBC Hlavnou časťou je ODBC manager. Ten slúži na vykonanie požadovaných operácií pomocou ovládačov. V prípade požiadavky vykonania nejakej operácie prenáša túto požiadavku cez ovládače na databázu a v prípade, že súčasťou operácie sú aj návratové údaje, tieto po získaní poskytuje aplikácii. V tomto modeli sa príkazy nezadávajú priamo databáze. Požiadavka je prenesená na ODBC, ktorý pomocou ovládačov preloží daný príkaz do podoby zrozumiteľnej konkrétnej databáze. Každý ODBC ovládač vie všetko o tom, ako preložiť štandardný príkaz na príkaz, ktorému rozumie daná databáza. Tento jednotný prístup k rôznym druhom databáz umožňuje podstatné zjednodušenie práce s nimi. Váš program <----> ODBC manager<----> ODBC Drivers <----> Databáza
CharakteristikaODBC ODBC manager je poskytovaný Microsoftom a ovládače pre jednotlivé databázy poskytuje prevádzkovateľ alebo autor databázy. Problém môže nastať v prípade, že konkrétna databáza neposkytuje všetky možnosti. Nakoľko je cez ODBC štandardizovaný prístup k databázam, príkazy pre ODBC musia vyhovovať každej databáze. Jednotlivé databázy však neposkytujú rovnaké možnosti práce, teda sa môže stať, že príkaz, ktorý chceme vykonať nebude možné na danej databáze uskutočniť. Tento problém je riešený štandardizáciou toho, čo databáza musí vedieť spracovať. Pomocou týchto štandardov potom vieme, že daný príkaz bude určite implementovaný a v prípade, že databáza poskytuje viac možností, vieme využiť aj tie. Pre prístup k databázam cez ODBC sa používajú príkazy jazyka SQL (Structured querry language).
CharakteristikaODBC Štandardná práca s databázou pomocou ODBC vyzerá nasledovne: • Pripojenie sa na databázu • Spracovanie návratových hodnôt (ak nejaké sú) • Odpojenie sa od databázy
PHP a ODBC Pri komunikácii s databázovým serverom dochádza k nasledujúcej „reťazovej“ tranzakcii. Prehliadač <---->HTTP <---->WWWserver <---->SAPI <---->PHP <---->ODBC <----> NATIVE <---->ENGINE <---->databáza <---->ENGINE <---->PHP <----> SAPI <---->WWWserver <---->HTTP <---->Prehliadač Pripojenie k databázovému serveru zabezpečí funkcia ODBC_Connect( ). Jej parametre tvorí názov databázy, login a heslo. Funkcia vracia číslo spojenia.
PHP a ODBC Pripojenie k databaze: $spojenie=ODBC_Connect(“isf”,”nobody”,”anonym”); SQL dopyt vykonáva funkcia ODBC_Exec( ), parametre tvroí číslo spojenia a samotný SQL príkaz v úvodzovkách. $vysledok = ODBC_Exec($spojenie, "SELECT * FROM Zamestnanci"); Funkcia vracia referenčné číslo, pomocou ktorého funckia ODBC_Fetch_Row( ) sprístupňuje ntice. Ak už niet čo sprístupňiť, vráti false. Jednotlivé položky aktuálneho záznamu čítame prostredníctvom funkcie ODBC_Result( ). Jej parametre tvorí názov položky a číslo referencie, ktore vracia funkcia ODBC_EXEC().
PHP a ODBC while (ODBC_Fetch_Row($vysledok)) echo ODBC_Result($vysledok,”RC”).” “.ODBC_Result($vysledok, “Meno”).”“.ODBC_Result($vysledok,”Priezv”).” <BR>”; Databázu uzavrieme pomocou ODBC_Close() . ODBC_Close($spojenie);
PHP a ODBC Ošetrenie chýb pripojenia sa asi najednoduchšie realizuje pomocou if- else podmienok, pričom, v premenných $spojenie a $vysledok sa môžu vyskytnúť negatívne výsledky, a vtedy to indikuje chybu, a je veľmi užitočné keď takéto chyby budú ošetrené. Ošetrenie sa realizuje jednoducho vygenerovaním a vypísaním príslušnej chybovej hlášky. Štandardne pri interpretovaní príkazov php generuje hlášky, ktorých výpis je možné potlačiť zaradením symbolu @ pred riadok. @$spojenie = ODBC_Connect("test", "", ""); if (!$spojenie): echo "Nepodarilo sa pripojit k databáze!"; else: @$vysledok = ODBC_Exec($spojenie,"SELECT * FROM Zamestnanci"); if (!$vysledok): echo "Chyba pri vykonavani SQL-dotazu!"; else: while(ODBC_Fetch_Row($vysledok)):..... pokracovanie kodu
PHP a ODBC Pre ODBC chyby existujú príkazy: • odbc_errormsg -- zoberie posledný "error message" string odbc_errormsg ( [int connection_id]) vráti reťazec obsahujúci posledný ODBC error message, alebo prázdny reťazec, ak chyba nenastala. • odbc_error -- zoberie posledný "error code" string odbc_error ( [int connection_id]) vráti 6-ciferný ODBC status, alebo prázdny reťazec, ak chyba nenastala.
JAVA a ODBC (JDBC) JDBC - Java DataBase Connectivity - súbor tried umožňujúcich aplikácii posielať SQL príkazy na systém riadenia bázy dát (SRBD) a získavať výsledky. Tieto triedy a rozhrania sa nachádzajú v balíku java.sql. Databázové systémy Databázový systém = SRBD + BD SRBD (DBMS) - Systém Riadenia Bázy Dát (Database Management System) BD (DataBase) - Báza Dát Architektúra JDBC JDBC API obsahuje dve základné rozhrania: pre programátorov Aplikácií (JDBC API) a pre programátorov ovládačov databázy (JDBC Driver API).
JAVA a ODBC (JDBC) Vrstvy: Aplikácia - volanie metód JDBC na poslanie SQL príkazov a získanie výsledkov • žiada o spojenie so zdrojom dát • posiela SQL príkazy • definuje oblasť uloženia výsledku • získava výsledky • spracováva chyby • uzatvára spojenie Driver Manager (správca ovládačov) - nahranie špecifického ovládača pre aplikáciu • určenie umiestnenia ovládača • spracovanie volaní JDBC • definuje oblasť uloženia výsledku • získava výsledky • spracováva chyby
JAVA a ODBC (JDBC) Driver (ovládač) - posielanie SQL príkazov na zdroj dát, získavanie výsledkov. Java odlišuje 4 typy ovládačov. Data source (zdroj údajov) - predstavuje SRBD (+sieťová vrstva)
JAVA a ODBC (JDBC) Komunikáciu so SRBD pomocou JDBC API: Postup pri komunikácii so SRBD pomocou rozhrania JDBC v Jave vyjadruje nasledujúci obrázok.
JAVA a ODBC (JDBC) Ošetrenie chýb pri práci s DB V JAVE sa používaju výnimky, ktoré keď vzniknú tak signalizujú chybu. Odchytávanie takýchto vynímiek sa realizuje v bloku try-catch-finally a syntax vyzerá následovne. try{ ... kod pre pracu s DB ... }catch (Exception e){ System.out.println("Chyba pri práci s DB "+e.getMessage()); return null; } finally{ ... kod ktory sa urcite vykona aj po vyhodeni exception, zvykne sa tu davat odpojenie od servra (zatvorenie databazy) ... }
Borland C++ Builder a ODBC Jedným zo spôsobov ako vytvoriť program, ktorý bude pristupovať k databáze je použitie prostredia Borland C++ Builder. Toto prostredie má implementované prvky na riadenie a prístup k databáze.
PRÍKLAD V PHP PHP podporuje viac databázových systémov. Funkcie pre prácu s určitým SRBD začínajú jeho názvom. PHP preto obsahuje funkcie začínajúce ODBC_, ktoré slúžia pre spoluprácu s ODBC rozhraním, funkcie začínajúce na Pg_, ktoré slúžia na komunikáciu s SRBD Postgres alebo MySQL_, ktoré zas komunikujú s MySQL databázovým systémom. Najprv je nutné pripojiť sa k SQL serveru pomocou funkcie xxx_Connect(), kde za xxx dosadíme predponu príslušného SRBD (MySQL_Connect( ), Pg_Connect( )).napr: $spojenie = MySQL_Connect(“localhost”); kde “localhost” je meno počítača, na ktorom beží MySQL. Prihlasovanie na MySQL server môžebyť aj v tvare: $spojenie =MySQL_Connect(“mgx”,”nobody”,”anonym”); kde parametre znamenajú podľa poradia ("meno_počítača", "meno_užívateľa", "heslo").
PRÍKLAD V PHP Funkcia vracia číslo spojenia s databázou. Týmto by sme sa pripojili na nami zvolený databázový server. Teraz si musíme zvoliť príslušnú databázu, s ktorou chceme pracovať. Dosiahneme to pomocou príkazu: xxx_Select_DB ("meno_databázy" ); Pre zadávanie SQL dopytov slúži funkcia MySQL_Query( ), alebo MySQL_Exec(). Prvým parametrom je SQL výraz a druhý číslo spojenia. Tento parameter je nepovinný a môžeme ho vynechať. Výsledkom je číslo, ktoré slúži na prácu s výsledko SQL dopytu ako referenčné číslo. $vysledok = MySQL_Query(“SELECT * FROM OS_Udaje ORDER BY Priezv”);
PRÍKLAD V PHP Pomocou referenčného čísla je možné získať ďalšie informácie, napríklad počet n-tíc tuples v tejto projekcii. Na to slúži funkcia MySQL_Num_Rows (), ktorej parameter tvorí referenčné číslo. Funkcia vracia počet záznamov, na ktoré odkazuje referenčná číslo. Napr: echo “ V tabulke je “.MySQL_Num_Rows($vysledok).” zaznamov”; Výpis jednotlivých entíc zabezpečuje funkcia MySQL_Fetch_Array(), ktorej parametrom je referenčné číslo. Funkcia vráti obsah entice a presunie sa na ďalšiu. Ak už niet čo vypísať, vráti false. Obsah všetkých n-tíc zabezpečíme cyklom: While ($ntica=MySQL_Fetch_Array($vysledok)) echo $ntica[“RC”].” “.$ntica[“Meno”].” “.$ntica[“Priezv”].”<BR>”;
PRÍKLAD V PHP Spojenie ukončíme pomocou funkcie MySQL_Close( ), kde Parametrom je číslo spojenia. Napr: MySQL_Close($spojenie ); Pre prácu s databázovými zdrojmi platia obdobné príkazy: integer ODBC_Connect("meno_databázy","login","password") Funkcia slúži na pripojenie k dátovému zdroju. Návratová hodnota funkcie v prípade nadviazania spojenia je číslo spojenia. V prípade neúspechu vracia hodnotu false integer ODBC_Exec(integer spojenie, string SQL_prikaz); Funkcia slúži na vykonanie SQL príkazu. Ak pri vykonávaní príkazu došlo k chybe funkcia vracia hodnotu false Obdoba tohto príkazu je aj príkaz ODBC_Do(); s presne rovnakou syntaxou.
Otázky Čo znamená ODBC? a) Open Database Conectivity b) Close Database Conectivity c) Create Database Conectivity Aké príkazy existujú pre ODBC chyby? a) odbc_errormsg b) odbc_error c) odbc_chyba Pomocou akej funkcie sa môžeme pripojiť k SQL serveru? a) xxx_Connect() b) Connect()_xxx c) Connect_xxx()