Tentokrát rozeberu jednoduchou ASP stránku, která bude přistupovat do databáze Oracle a zobrazovat data načtená z tabulky. Použiji k tomu konto předinstalovaného uživatele Tiger, který vlastní ukázkovou tabulku EMP. Celý ukázkový soubor je podrobně okomentován, takže nezbývá, než se pustit do programování.
Nejprve si tzv. připravíme stránku a nastavíme některé její vlastnosti. Řekneme serveru, který skriptovací jazyk použijeme, že při chybě budeme pokračovat dále ve skriptu a že použijeme vyrovnávací buffer:
<%@LANGUAGE = „NScript“ ‚rikame, jaky skriptovaci jazyk bude pouzit ‚vypis obsahu sloupcu ENAME a JOB z tabulky EMP uzivatele SCOTT ‚pri chybe budeme pokracovat dale ve skriptu on error resume next ‚budeme pouzivat vyrovnavaci buffer – zrychli praci s databazi response.buffer = true |
|
V další části si vytvoříme UCX objekt pomocí příkazu CreateObject
, který nám umožní připojit se do databáze, databázi otevřeme přes uživatelské jméno SCOTT a heslo TIGER a odkaz na databázi si uložíme do proměnné CN
:
‚vytvorime objekt, ktery nam umozni pracovat s databazi set CN = CreateObject(„UCX:NDODB.CONNECTION“) ‚otevreme databazi ‚DBTYPE=0 – oznaceni pro ORACLE ‚DATABASE=ORANW81.WORLD – jmeno DB ORACLE ‚scott/tiger – jmeno a heslo uzivatele v DB ORACLE CN.Open(„DBTYPE=0;DATABASE=ORANW81.WORLD“,“scott“,“tiger“) |
|
Nyní si do proměnné DBQuery připravíme dotaz, kterým následně pomocí příkazu Execute
objektu CN
provedeme výběr dat z databáze a uložíme ho do proměnné RS
:
‚sestavime si SQL dotaz a ulozime si ho do promenne set DBQuery=(„SELECT ename,job FROM emp“) ‚provedeme nad DB dotaz, který mame pripraveny v promenne DBQuery ‚ prvni vraceny radek ulozime do promenne RS set RS=CN.Execute(DBQuery, 1Rec) %> |
|
V tuto chvíli máme již data z databáze připravena a můžeme klientovi poslat hlavičku html souboru a nadpisy sloupců tabulky:
<!– hlavicka HTML souboru –> <html> <head> <meta http-equiv=“Content-Type“ content=“text/html; charset=windows-1250″> <title>Priklad</title> </head> <body> <!—hlavicka HTML tabulky s popisem polozek –> <table border=“1″ cellpadding=“5″ cellspacing=“0″ width=“100%“> <tr> <th width=“50%“> Příjmení </th> <th width=“50%“> Funkce </th> </tr> |
|
Data z databáze budeme vypisovat v cyklu WHILE tak dlouho, dokud nedosáhneme konce. Hodnoty jednotlivých sloupců tabulek budeme vypisovat pomocí RS.Fields.Item(1).Value
a RS.Fields.Item(2).Value
. Na další hodnoty resp. řádek databáze se posuneme pomocí metody RS.MoveNext
. Cyklus je ukončen příkazem Wend
. Tato část kódu je poměrně obsáhlá a navíc se zde prolíná kód ASP s kódem HTML, ale domnívám se, že je vše přehledně okomentováno a že nebudete mít s jeho pochopením problémy.
<% ‚cyklus, kterym budeme vypisovat jednotlive radky tabulky ‚provadi se tak dlouho, dokud promenna RS nedosahne konce While Not (RS.eof) %> <!– radek THML tabulky –> <tr> <!– prvni bunka HTML tabulky –> <td width=“50%“ align=“center“> <% ‚vypiseme hodnotu (Value) z prvni polozky (Item) SQL dotazu (v DB sloupec ename) response.write(RS.Fields.Item(1).Value) %> </td> <!– druha bunka HTML tabulky –> <td width=“50%“ align=“center“> <% ‚vypiseme hodnotu (Value) z druhe polozky (Item) SQL dotazu (v DB sloupec job) response.write(RS.Fields.Item(2).Value) %> </td> <!– ukoncime radek HTML tabulky –> </tr> <% ‚posuneme se na dalsi radek vraceny z databaze RS.MoveNext ‚konec cyklu – vrati se na zacatek cyklu a vytvori dalsi radek tabulky Wend |
|
Teď už nám zbývá pouze uvolnit všechny alokované proměnné příkazem CN.Close
, vyprázdnit buffer příkazem Response.buffer()
a nakonec doplnit zbytek html kódu.
‚vyprazdnime buffer response.buffer() ‚po vypsani vsech polozek uzavreme spojeni s databazi CN.Close %> <!—uzavreme HTML tabulku a cely HTML soubor –> </table> </body> </html> |
|
Výsledkem našeho snažení by měla být tabulka, kterou vidíte na obrázku.
Ukázkový soubor si také můžete stáhnout zde.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.