Connessione con database remoto1
Per realizzare una query di estrazione di
dati da più tabelle (Classe, Studente,
Appartiene) memorizzate in un database
remoto (creato con ACCESS, salvato nel
file Scuola.mdb) e visualizzarli sulla
finestra del browser
<%
' Per rendere obbligatorio l’uso di Dim cioè esplicitare le variabili in uso
Option Explicit
Dim oConn, Rs, sSQL
' Si crea un oggetto sul Server per la connessione a database con strumenti ADO
Set oConn = Server.CreateObject("ADODB.Connection")
' Si crea un oggetto sul Server per individuare i vari records con strumenti ADO
Set Rs = Server.CreateObject("ADODB.RecordSet")
' maggior efficienza uso di OLE-DB Provider2 for Microsoft Jet invece di DRIVER specifico
oConn.open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath
("\db\Scuola.mdb"))
rem Microsoft.Jet.OLEDB.x.y, dove x e y rappresentano la versione e la release del provider
rem La versione del provider per accedere ai database MS Access2000 4.0 e 2003
' alternativa: si usa driver opportuno con indipendenza dalla versione del database MS Access
rem oConn.open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath
("\db\Scuola.mdb"))
' la stessa stringa di connessione su più righe
rem oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & _
rem "DBQ=" & server.mappath("\db\Scuola.mdb")
' Si imposta la sintassi della query di estrazione dati con linguaggio SQL3
sSQL = "SELECT Classe.Corso, Studente.Cognome, Studente.Nato, Studente.Altezza FROM
Classe INNER JOIN (Studente INNER JOIN Appartiene
ON Studente.IdStudente = Appartiene.IdStud) ON Classe.IdClasse = Appartiene.IdCla"
' Si deve eseguire la query con recordset aperto e connessione stabilita
Rs.Open sSQL,oConn
' Si visualizza su finestra del browser il risultato della ricerca:
' dopo informazione sul nome dei campi, senza presentazione in forma tabellare
' ciclo fino a quando il set di record non raggiunge la fine della tabella logica
1
Web Server IIS su Pc13 Aula1 in Intranet; sottocartella db per la memorizzazione dei database.
Il termine provider indica in generale un elemento fornitore dal quale si ottengono servizi o dati.
3
Structured Query Language. Per la sintassi vedi http://www.w3schools.com/sql/default.asp
2
Response.Write("Si legga<br>Corso : Cognome Nato Altezza <br><br>")
While not Rs.eof
Response.Write(" " & RS.Fields("Corso").Value & " : " &_
RS.Fields("Cognome").Value & " " & RS.Fields("Nato").Value & " " &_
RS.Fields("Altezza").Value &"<br>")
Rs.movenext
Wend
'Si chiude la connessione
oConn.close
'Si rilasciano le risorse liberando la memoria allocata (cancellazione connessione e recordset)
Set Rs = Nothing
Set oConn = Nothing
%>
Richiedendone l'esecuzione dalla pagina http://pc13/esempi/ADO/prova_db.htm
oppure lanciando http://www27.brinkster.com/pbiasotti/db/provaScuola.asp
oppure http://www32.brinkster.com/fioref/db/provaScuola.asp
oppure http://www11.brinkster.com/mavira/db/provaScuola.asp
<!-- effetto:
-->
Per connetterci alla sorgente di dati abbiamo creato un oggetto connessione ed un oggetto recordset.
Quando la connessione è stata stabilita, si genera una tabella dinamica ed è necessario che il recorset si
mantenga aperto (nomeRecordSet.open sSQL, oConn).
Esiste una seconda tecnica che utilizza l’esecuzione4 della query (tipicamente updates, inserts e deletes) con
sintassi:
nomeConnessioneDb.execute (sintassiSQL)
anche senza invocare esplicitamente il metodo di creazione dell’oggetto sul Server che permetterà di
individuare i vari records con strumenti ADO.
Set RS = oConn.execute (sSQL)
Attività:
Si modifichi la pagina ASP, integrando linguaggio HTML e CSS per presentare i risultati in forma tabellare
con sfondo colorato, con effetto come in figura:
ottenuto richiedendone l'esecuzione dalla pagina
http://pc13/esempi/ADO/prova_db_tabella.htm
oppure lanciando http://www27.brinkster.com/pbiasotti/db/TabellaScuola.asp
4
Il metodo execute dell’oggetto Connection recupera i dati dal DB e li inserisce nell’oggetto Recordset