Una delle maggiori potenzialitร offerte da ASP e dai linguaggi di scripting lato server in generale (ASP.NET, PHP, JSP, CGI, eccโฆ) รจ quella di interagire con un database, ovvero con una fonte di dati strutturata che rispetti gli standard del linguaggio SQL.
I database con i quali ASP puรฒ interagire sono Ms Access ed Ms SQL Server, ovvero database di casa Microsoft. Puรฒ interagire anche con MySQL, col quale perรฒ non cโรจ un rapporto ottimale. Puรฒ interagire con Oracle, Basis, DB2 e tutti gli altri database che rispettino gli standard di comunicazione dettato dal driver ODBC (Open Database Connectivity).
Il database che utilizzeremo per i nostri esempi รจ Access; รจ richiesta quindi una minima conoscenza in merito alla creazione di un nuovo file di database e di una semplice tabella.
Iniziate a creare sul vostro server Web, nella cartella degli esempi della guida, la cartella database allโinterno della quale inseriremo un file di database Access di prova e due file ASP, uno per la lettura dei dati ed uno per la scrittura di dati.
Il componente ADO
ASP utilizza il componente ADO (ActiveX Data Object) per lโinterfaccia effettiva con un database che rispetti gli standard ODBC. ADO mette a disposizione tre oggetti principali: Connection, Recordset e Command. Il terzo รจ un oggetto specialistico non adatto al target di conoscenza e competenza del lettore. Spiegheremo i primi due.
Connection permette di stabilire una connessione col database e di eseguire query SQL. Recordset permette in maniera piรน appropriata di eseguire query. Per query (che letteralmente significa interrogazione) si intende una qualsiasi operazione effettuabile su un database: in primis quindi la lettura dei dati, ma anche inserimenti, modifiche e cancellazioni.
Creiamo nella nostra cartella database il file di database Access database.mdb che dovrร contenere la tabella persone composta dai campi id (di tipo Contatore), nome e cognome (entrambi di tipo Testo). Salviamo la tabella senza specificare nessuna chiave primaria quando richiesto e andiamo avanti.
Connettersi al database con ASP
Si crei nella cartella di prova il file connessione.asp il cui codice รจ rappresentato semplicemente la variabile contenente la stringa di connessione al database:
<%
Dim str_cn
str_cn = ""
str_cn = str_cn & "driver={Microsoft Access Driver (*.mdb)};"
str_cn = str_cn & "dbq=" & Server.MapPath("database.mdb")
%>
Estrarre i dati dal database con ASP
Si crei poi il file leggi.asp (che includerร con le SSI il file connessione.asp) e si inserisca il seguente codice corredato da opportuni commenti:
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
Dim cn, rs ' Variabili per la connessione e per il Recordset
' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open str_cn ' Apro la connessione al database
Dim SQL ' Creo la query SQL
SQL = "SELECT * FROM persone"
' Apro il Recordset
rs.Open SQL, cn
%>
<html>
<head>
<title>Lettura dei dati da un database</title>
</head>
<body>
<%
' Verifico che la tabella contenga dati
' Se non ne contiene lancio un messaggio di avviso
If rs.EOF = True Then
%>
<p>Nessun dato trovato</p>
<%
' Se invece ne contiene visualizzo i dati in funzione
' della query SQL specificata
Else
While rs.EOF = False
%>
<p>
<b>Nome:</b> <%=rs("nome")%>
<br>
<b>Cognome:</b> <%=rs("cognome")%>
</p>
<%
rs.MoveNext
Wend
End If
%>
</body>
</html>
<%
' Chiudo il Recordset
rs.Close
Set rs = Nothing
' Chiudo la connessione
cn.Close
Set cn = Nothing
%>
Il codice commentato dovrebbe risultare abbastanza chiaro. In merito al preciso funzionamento degli oggetti messi a disposizione da ADO rimando il lettore ad una guida avanzata o corredata del supporto di un Docente.
Scrivere i dati in un database con ASP
Facciamo adesso un esempio di scrittura dei dati senza lโutilizzo di un modulo, ma semplicemente eseguendo un comando INSERT dellโSQL. Si crei il file scrivi.asp il cui codice commentato รจ esposto di seguito:
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
Dim cn ' Variabile per la connessione
' Creo un'istanza per la connessione
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open str_cn ' Apro la connessione al database
Dim SQL ' Creo la INSERT in SQL
SQL = ""
SQL = SQL & "INSERT INTO persone "
SQL = SQL & "(nome, cognome) "
SQL = SQL & "VALUES "
SQL = SQL & "('Luca', 'Ruggiero')"
cn.Execute(SQL)
' Chiudo la connessione
cn.Close
Set cn = Nothing
' Rimando alla pagina di lettura dei dati
Response.Redirect "leggi.asp"
%>
Cancellare i dati dal database con ASP
Attraverso un query di DELETE รจ possibile cancellare dati dal database. Vediamo un esempio:
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
Dim cn ' Variabile per la connessione
' Creo un'istanza per la connessione
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open str_cn ' Apro la connessione al database
Dim SQL ' Creo la query di cancellazione
SQL = ""
SQL = SQL & "DELETE * FROM persone "
SQL = SQL & "WHERE nome = 'Luca' AND cognome = 'Ruggiero'"
cn.Execute(SQL)
' Chiudo la connessione
cn.Close
Set cn = Nothing
' Conferma a video
Response.Write "<p>Record cancellato con successo</p>"
%>
Per maggiori informazioni sul linguaggio SQL si faccia riferimento alla guida dedicata.