Accesso a basi di dati con ASP Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 1 Algoritmo per visualizzare un DB 1. “creare” una connessione tra lo script ASP e il database 2. Costruire una QUERY in linguaggio SQL che opera sul database 3. Recuperare la risposta del database in un insieme di record “Recordset” 4. Visualizzare i record Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 2 Connessione al database Metodo: usare una STRINGA DI CONNESSIONE Specificare il DRIVER (Microsoft Access Driver (.mdb) ) Specificare il percorso completo del file del database Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 3 Percorso completo di un file Metodo MapPath dell’oggetto Server di ASP Sintassi: Server.MapPath(“percorso relativo del file”) Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 4 Costruire la stringa di connessione 1. Costruite la stringa che specifica il driver e quella che specifica il percorso var driverString = "DRIVER={Microsoft Access Driver (*.mdb)}; "; var databaseString = "DBQ=" + Server.MapPath("./studenti.mdb") + ";"; 2. Concatenate le stringhe var connString = driverString + databaseString; Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 5 "Creare" la connessione Metodo createObject dell’oggetto Server Sintassi: var adoConnection = Server.CreateObject("ADODB.Connection"); L’argomento ADODB.connection stabilisce che l’oggetto creato è una connessione ActiveX Data Object DataBase Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 6 Aprire la connessione adoConnection.Open(connString); Il metodo Open “apre” una connessione al Database specificato nella stringa di connessione connString Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 7 SQL Structured Query Language Linguaggio per l’interrogazione di basi di dati Visibile in Access dal menù Visualizza Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 8 Esempi di query SELECT personale.* FROM personale; SELECT personale.nome, personale.cognome, personale.indirizzo FROM personale; SELECT nome, cognome, indirizzo FROM personale; Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 9 Stringa contenente una query var mySQL = "SELECT " + "nome,cognome,matricola " + "FROM tabellaStudenti"; Seleziona i campi nome, cognome, matricola dalla tabella studenti Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 10 Per costruire una query... Aprite la base di dati in Access Componete la query con la composizione guidata e in visualizzazione struttura Quando la query è pronta, visualizzatela in SQL (menù visualizza) Copiatela e incollatela nel file ASP Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 11 Invio della query e ricezione della risposta È necessario eseguire la query adoRecordSet = adoConnection.Execute(mySQL); Il risultato è un oggetto di tipo Recordset (insieme di record) L’insieme di record contiene la risposta alla query Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 12 Recuperare le informazioni di un recordset Esempio: se nel database Access c’è un campo “nome”, l’informazione corrispondente nel recordset si ottiene con la sintassi adoRecordSet("nome").Value Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 13 Scrivere le informazioni nella pagina HTML La sintassi <% =espressione %> scrive il valore dell'espressione nella pagina <%=adoRecordSet("nome").Value%> Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 14 Organizzazione della visualizzazione I record possono essere inseriti in una <TABLE> per essere visualizzati <TR> <TD><%=adoRecordSet("nome").Value%></TD> <TD><%=adoRecordSet("cognome").Value%></TD> <TD><%=adoRecordSet("matricola").Value%></TD> </TR> Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 15 Enumerare i record di un recordSet Metodo MoveNext() Permette di passare da un record al successivo Se non ci sono più record successivi, la proprietà Eof (End Of File) dell’oggetto Recordset assume valore true Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 16 Istruzione di ciclo while while (condizione) { … istruzioni Javascript … } Verifica la condizione, se è vera ripete le istruzioni, e ricomincia La ripetizione si interrompe quando la condizione diventa falsa Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 17 Enumerazione dei record while (adoRecordSet.Eof == false){ … istruzioni Javascript … adoRecordSet.MoveNext(); } condizione Il ciclo si interrompe quando Eof vale true, cioè quando sono finiti i record Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 18 Chiusura delle connessioni Un database può aprire un numero limitato di connessioni Se molti utenti accedono al database, ciascuno deve chiudere la sua connessione adoRecordSet.Close(); adoConnection.Close(); Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 19 Riutilizzo della memoria La memoria di un calcolatore non è illimitata Se ci sono molte pagine ASP richieste, la memoria di ciascuna pagina va riciclata alla fine adoRecordSet = null; adoConnection = null; Università della Tuscia - Facoltà di Scienze Politiche. Informatica 2 - a.a. 2005-06 - Prof. Francesco Donini 20