Lettura dei dati da un database
Una volta affrontati, in via sia pur teorica, gli oggetti che fanno parte della libreria ADO, possiamo passare a degli esempi pratici sulla scorta di un database di test.
Creiamo innanzitutto la struttura che dovrà ospitare una piccola e semplice applicazione ASP che svilupperemo nel corso di questo e dei prossimi capitoli.
All'interno del nostro server Web creiamo, sotto la cartella
C:\Inetpub\wwwrootla cartella
test_dbin cui creeremo il file di database MS Access
database.mdbIl database in oggetto avrà la seguente stuttura (tabelle/campi):
- autori
- aut_id (Contatore)
- aut_nome (Numerico)
- libri
- lib_id (Contatore)
- lib_autore (Numerico)
- lib_titolo (Testo)
aut_id | aut_nome -------------------- 1 | E. A. Poe 2 | B. Stocker 3. | M. ShelleyAndiamo adesso ad applicare quanto appreso nei capitoli precedenti sull'oggetto Connection e l'oggetto Recordset.
Una precisazione: essendo l'oggetto Command molto poco usato e, come rimarcato più volte, adatto ad un uso specialistico, non lo prenderemo in considerazione nei nostri esempi pratici.
Segue il codice del file "leggi.asp" che estrae tutti i dati dalla tabella "autori":
<%@LANGUAGE = VBScript%>
<%
Dim sc, cn, rs
sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sc & Server.MapPath("database.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
%>
<html>
<head>
<title>Lettura dei dati</title>
</head>
<body>
<h1>Lettura dei dati</h1>
<%
rs.Open "SELECT * FROM autori ORDER BY aut_id ASC", cn, 1
If rs.EOF Then
%>
<p>Nessun record trovato!</p>
<%
Else
While rs.EOF = False
%>
<p>
ID: <%=rs("aut_id")%><br>
Nome: <%=rs("aut_nome")%>
</p>
<%
rs.MoveNext
Wend
End If
rs.Close
%>
</body>
</html>
<%
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Lanciate il file all'indirizzo
http://localhost/test_db/leggi.aspper gustare il risultato.
Apriamo la Connection ed il Recordset, facendo riferimento al database MS Access creato in precedenza.
Nel corpo della pagina eseguiamo una query aprendo il Recordset ed estraendo tutti i dati con un ciclo che fa riferimento alla proprietà "EOF" per verificare che il Recordset sia ancora pieno, ed al metodo "MoveNext" per spostarsi al record successivo.
Prima dell'estrazione dei dati, naturalmente, verifico con una condizione che effettivamente esistano dati disponibili per la query lanciata e, in caso negativo, lancio un messaggio statico di avviso.
Chiudiamo il Recordset appena non serve più, stesso all'interno della pagina.
Distruggiamo il Recordset, chiudiamo e distruggiamo la Connection alla fine della pagina.
Lascio a voi il compito di visualizzare i dati dalla tabella "libri" e vi do una dritta: provate ad inserire nel database manualmente alcuni record, ad esempio il libro "Dracula" di "B. Stocker" e "Frankenstein" di "M. Shelley".
Nella tabella "autori" Stocker ha ID 2 e Shelley ha ID 3. Questi i valori numerici da specificare nel campo "lib_autore" della tabella "libri". Nell'ultimo capitolo vedremo e capiremo il perchè.







