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.

obr1.jpg (48683 bytes)

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.

Žádný příspěvek v diskuzi

Odpovědět