Layer 06

Interrogazione al database.

Il mio database è realizzato in Access e si chiama Magazzino.mdb, situata in una directory diversa da quella in cui risiedono anche le pagine .html. All’interno di questo DB c’è una tabella che si chiama Warehouse i cui campi principali sono: Itemnum, Description e Type. Andiamo a vedere come realizzare la connessione con il database, eseguire una semplice query e presentarne il risultato a video in una semplice tabella. Il database è disponibile per il download qui >>

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:/inetpub/wwwroot/database/Magazzino.mdb") Set objRs = Server.CreateObject("ADODB.Recordset")
set objRs = objConn.Execute("SELECT * from Warehouse")
%>

<center><table BORDER=3 WIDTH=200>
<% Do while NOT objRs.EOF %> <tr>
<td BGCOLOR="red">
<%
response.write "Codice = " & objRs("Itemnum") & "<br>"
%>
</td>
<td>
<%
response.write "Descrizione = " & objRs("Description") & "<br>"
%>
</td>
<td>
<%
response.write "Tipo = " & objRs("Type") & "<br>"
%>
</td>
<%
objRs.Movenext
%>
</tr>

<% Loop %>

</table></center>

<%
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>

Andiamo a vedere riga per riga il codice:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:/inetpub/wwwroot/database/Magazzino.mdb")

Con queste prime righe abbiamo creato (inizializzato) una connessione al database (per dettagli vedi le lezioni precedenti) A questo punto dobbiamo trovare un “recipiente” per i dati che stiamo estrapolando dal Database. Questo recipiente è uno dei tanti oggetti della famiglia ADODB e si chiama recordset (quale nome più adatto? 🙂

Set objRs = Server.CreateObject("ADODB.Recordset")

Con questa riga ne lancio l’instanza.
A questo punto eseguiamo il metodo execute dell’oggetto objConn che abbiamo creato in precedenza.

set objRs = objConn.Execute("SELECT * from Warehouse")

L’argomento del metodo è la query che vogliamo eseguire sul nostro DB. Il tutto lo buttiamo dentro al oggetto objRs.

Giunti qui abbiamo dentro l’oggetto objRs il risultato della nostra query cioè i dati che vogliamo visualizzare. Nell’esempio che presento visualizzerò i dati all’interno di una tabella molto semplice utilizzando il metodo response.write.
All’interno della definizione della tabella inserisco un ciclo Do While …… Loop;
Da notare che la condizione del ciclo è EOF (End Of File) del recordset generato.

<center><table BORDER=3 WIDTH=200>
<% Do while NOT objRs.EOF %> <tr>
<td BGCOLOR="red">
<%
response.write "Codice = " & objRs("Itemnum") & "<br>"
%>
</td>
<td>
<%
response.write "Descrizione = " & objRs("Description") & "<br>"
%>
</td>
<td>
<%
response.write "Tipo = " & objRs("Type") & "<br>"
%>
</td>
<%
objRs.Movenext
%>
</tr>

<% Loop %>

</table></center>

Mi resta da commentare solo l’ultima riga che è objRs.Movenext che praticamente non fa altro che, una volta letto un record, passare al successivo.

E l’ultimo chiude la porta! Con le ultime 4 righe di codice vado prima a chiudere gli oggetti objRs e objConn e poi a “distruggermi” cioè ad eliminarne l’istanza.

<%
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>

Piccola nota: Se state installando il DataBase magazzino sulla vostra macchina, cioè avete accesso fisico alla macchina che vi fornisce il servizio di IIS 5.0 e la vostra macchina è una macchina NT like, dovreste stare molto attenti ai permessi di protezione del file del database, se il database è stato copiato dall’amministratore del computer, esso ne diventa proprietario, sicchè nessun altro potrà accedervi, nemmeno iis5.0, dovete premere il tasto dx del mouse sul file del database, andare su proprietà, in alto sul cavaliere protezione ed aggiungere l’utente "everyone" o se volete essere un po’ più sicuri, aggiungete solo l’utente iusr_nomemacchina che iis 5.0 ha creato sul vostro computer, i permessi di accesso devono essere di controllo completo.]]>