back to top

Interazione con i database in Classic ASP

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.

Pubblicitร