ASP kezdőknek 3 –
Adatbázisok |
|
Az ASP egyik legtöbbet használt funkciója az adatbázisokkal való munka.
Ebben a részben ezzel fogok foglalkozni. |
|
Az adatbázisokról pár szóban |
|
Egy weboldalt az adatbázisok használata tehet igazán dinamikussá. Az
adatbázisok segítségével rengeteg interaktív szolgáltatást valósíthatunk meg.
Pl.: fórum, vendégkönyv, képeslapküldő, statisztika, stb. Adatokat
gyűjthetünk látogatóinkról, kikérhetjük véleményüket egy szavazógéppel,
vagy regisztráltathatjuk őket egy szolgáltatásra. |
|
Milyen adatbázist használjunk? |
|
Az ASP szkript gyakorlatilag bármilyen ODBC kompatíbilis adatbázissal
képes együttműködni, de a három leggyakrabban használt adatbázis az Access,
a MySQL és az MSSQL. Itt most az Access adatbázisok használatát fogom
ismertetni, de túl sok különbség nincsen a használatuk között. Egy
adatbázishoz is lehet többféle módon kapcsolódni. Kapcsolódhatunk egy
előre definiált DNS-en keresztül is, de tekintve, hogy nem minden
szerveren használhatunk DNS kapcsolatokat és a DNS nélküli kapcsolat
gyorsabb, én ezt a módszert választottam. |
|
Kapcsolódás az adatbázishoz |
|
Ahhoz, hogy használni tudjunk egy adatbázist, előbb fel kell
építenünk vele a kapcsolatot. Ezt a következő ASP kóddal tehetjük meg: Dim Conn Set Conn =
Server.CreateObject("ADODB.Connection") Conn.Open("DRIVER={Microsoft
Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")) A fenti
példában az első sor megadja, hogy milyen típusú adatbázist szeretnénk
használni, a második sor pedig megnyitja az adatbázist (a db.mdb helyére az adatbázis nevét és elérési
útját kell írni), amit azután a Conn
objektumon keresztül tudunk használni. Fontos, hogy ha módosítani is
szeretnénk az adatbázist, akkor olyan könyvtárba tegyük, melyen engedélyezve
van az írásjog (IUSR számára). A megnyitott adatbázisból azután SQL
parancsokkal, tranzakció alapon tudunk olvasni és írni. |
|
Lekérdezések |
|
Ennek a cikknek nem célja az SQL parancsok ismertetése, hisz ezekkel sok
vaskos könyv foglalkozik. Itt csak a legfontosabb SQL parancsokat
ismertetném. Első
példámban az adatbázis egyik táblájának meghatározott rekordját olvassuk ki: Dim Adatok Set Adatok =
Conn.Execute("Select * from tabla where ID=33") Ez a parancs az
adatbázis tabla nevű
táblájából kiolvassa az összes mező adatát, ahol a rekordazonosító 33.
Ez után a mezőkre a következő módon hivatkozhatunk: Valtozo = Adatok(0) Valtozo2 = Adatok(1) A rekord
mezői tehát az adatok tömb elemei lettek. Fontos megjegyezni, hogy a
rekord első mezője a tömb 0. (nulladik) eleme lett. Ez után a
kapott adatokat feldolgozhatjuk, kiírhatjuk, vagy áttölthetjük egy másik
adatbázisba. Az első példaprogram (aspdb1.asp) egy adatbázis megadott táblájából
kérdez le egy rekordot, és kiírja az eredményt. |
|
Hozzáadás |
|
Ha egy új rekordot szeretnénk beszúrni az adatbázisba, azt a
következőképpen tehetjük meg: Conn.Execute("Insert Into tabla (mezo1,mezo2,mezo3) values (123,
'abc','2003.03.06.')") Ez a sor a tabla nevű táblába beszúr egy új
rekordot, ahol a mezo1, mezo2 és mezo3 mezők értéke rendre 123 (numerikus érték), abc (szöveges érték) és 2003.03.06. (dátum). A beszúráskor az azonosító (ID) mező értékét nem kell megadni,
hiszen ez automatikusan generálódik. A közvetlen értékek helyett
természetesen változókat is használhatunk. Ilyenkor & jelekkel kel
összefűzni az SQL parancs részleteit és a változókat. A második
példaprogram (aspdb2.asp) egy űrlap adatait tárolja el az adatbázisban |
|
Törlés |
|
A törlés legalább olyan fontos, mint a lekérdezés vagy a bővítés. A
törléssel azonban vigyáznunk kell, mert az ASP-n keresztül nincs
megerősítési kérelem, és ha valamit elírunk, akár az adatbázis teljes
tartalmát vagy egy tábla tartalmát is törölhetjük. Ezért a törléseket érdemes
előbb az Access-en belül teszteli, és csak akkor beszúrni az ASP-be, ha
biztosak vagyunk abban, hogy csak azt fogja törölni, amit szeretnénk. Pl.: Conn.Execute("Delete from tabla where ID=33") A fenti sor a tabla nevű táblából kitörli a 33-as
rekordot. |
|
Módosítás |
|
Az adatbázisban lévő rekordokat persze módosítani is tudnunk kell. A
módosítás viszonylag egyszerű: Conn.Execute("Update tabla
set mezo1=456, mezo2='def', mezo3='2003.03.07.' where ID=33") Ez a parancs a tabla nevű tábla 33-as rekordját
módosítja, megadva az egyes mezők új értékeit. Ha nem írunk
szűrőfeltételt (where) a parancsba, akkor az összes rekordot módosítani fogja. Ennek statikus
adatokkal nyilván nincs értelme, hiszen akkor minden rekord egyforma (vagy
nagyon hasonló) lenne, de megadhatunk hivatkozásokat is a jelenlegi
rekordokra, pl.: mezo1=mezo1+10 Így a mező
aktuális értékéhez adunk hozzá 10-et. Ez a módszer dátum formátum esetén is
használható. Ilyenkor x napot adunk a dátumhoz. |
|
További lehetőségek |
|
Az ASP adatbázis kapcsolatán keresztül gyakorlatilag bármilyen SQL
parancsot végrehajthatunk, itt most csak a legfontosabbakat ismertettem.
Érdemes tehát próbálgatni, hiszen gyakorlat teszi a mestert. A legjobb
módszer az, ha az Access SQL szerkesztőjét használjuk. Ott közvetlenül
az adatbázison hajthatjuk végre a parancsokat, látjuk az eredményt, ezen
kívül az esetleges hibákat is ki tudjuk szűrni. Az Accessben ráadásul
nem is muszáj közvetlen SQL kódot írni, felépíthetjük a lekérdezést az Access
eszközeivel, majd megnézhetjük, hogy az hogyan is néz ki SQL-ben. Ez az egyik
legjobb módszer az SQL alap szintű megtanulására. |
|
Az adatbázis lezárása |
|
Fontos tudni, hogy a megnyitott adatbázis kapcsolat addig foglalja a
szerver memóriáját, amíg azt le nem zárjuk. Ha a látogató bezárja a
böngészőjét, akkor az adatbázis kapcsolat is lezárul, de, hogy ne
terheljük feleslegesen a szervert, jobb, ha minden nyitott objektumot
lezárunk. Ide nem csak az adatbázis kapcsolatok értendők, hanem a
megnyitott lekérdezési adatok is. Az alábbi példában lezárjuk az összes
kapcsolatot, ami ebben a cikkben szerepelt: Adatok.Close Set Adatok =
Nothing Conn.Close Set Conn = Nothing Ezeket az
objektumokat nem kötelező lezárni, de a szerver kímélése miatt ajánlott.
Sok ASP webszolgáltató szabályzatában is benne van, hogy az objektumokat
lehetőleg zárják le a szkriptek. Megtanultuk
tehát az adatbázisok kezelésének alapjait. Aki olvasta mindhárom cikket, akár
már egyszerűbb ASP alkalmazásokat is készíthet. A következő részben
egy - a látogatók nyomon követéséhez nélkülözhetetlen - technikát mutatok be:
a session-ök (menetek) és a cookie-k (sütik) használatát. |
|
Karsai Balázs |