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