Connessione con database remoto: più tabelle

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