I database

lezione 8

 

 

 

 

Fausto Marinsalta

 

 



Introduzione

In questa lezione (l’ultima) parleremo di ADO, Access ed il loro utilizzo all’interno di ASP. Con il passare del tempo vi accorgerete che dialogare con i database sarà di fondamentale importanza.

I file sorgenti utilizzati in questa lezione non sono stati riportati per motivi di spazio, tuttavia potrete scaricare le pagine ASP (clicca qui) zippate [8 KB] (con il database access).

Architettura di un database e terminologia

Un database è una raccolta di informazioni ben ordinate. Esso è composto da una o più tabelle. Potete immaginare una tabella come una pagina di Excel (chi di voi non l’ha utilizzato!): divisa in righe e colonne. Ogni colonna prende il nome di “campo” mentre la riga viene chiamata “record”. Ogni campo normalmente prende il nome dal tipo di dato che deve memorizzare. Per le nostre esercitazioni utilizzeremo database realizzati con Access. Quando andrete a realizzare un database con Access per la prima volta, potreste trovarvi in difficoltà quando salverete la tabella, infatti, vi verrà chiesto di dichiarare una “chiave primaria”. Una chiave primaria è un insieme di uno o più campi (la maggior parte di volte solo uno) che insieme fanno in modo che ogni record si differenzi dagli altri in almeno un campo.

Spesso, quando si realizza un database, si crea un campo chiamato “ID” con la funzione di chiave primaria in modo che ad ogni record viene assegnato un numero diverso dall’altro. I campi possono contenere diversi tipi di dati. Il tipo di dato contenuto si imposta nella voce “Tipo dati”, le opzioni disponibili sono piuttosto intuitive. Se un campo viene impostato come contatore, esso si riempirà automaticamente.

Per impostare una chiave primaria è sufficiente cliccare con il tasto destro del mouse sul nome del campo per farla diventare chiave primaria. Ricordatevi che il valore contenuto in quel campo da un record non può essere allo stesso tempo presente in un altro record! Nel momento in cui si salva una tabella è importante dargli un nome significativo, infatti, tale nome ci sarà utile quando si vorrà utilizzare il database. Una volta creata la tabella è possibile sia visualizzare e modificare i valori in essa contenuti, sia visualizzare la struttura della tabella. Per visionare la struttura è sufficiente cliccare con il tasto destro del mouse sul nome della tabella e scegliere “Struttura” altrimenti, per visualizzare i dati, è sufficiente un doppio click.

Per esercitarvi e per utilizzare il listato che verrà presentato nel corso della lezione, create un database (db1.mdb) con due tabelle: "conta" e "agenda".

La prima tabella la utilizzeremo come contatore visite ed avrà due campi: “ pagina ” (chiave primaria)(tipo di dato: testo) e “ visite ” (tipo di dato: numerico); la seconda tabella conterrà una piccola agenda ed avrà quattro campi: “ ID ” (contatore)(chiave primaria), “ nome ” (testo), “ cognome ” (testo), “ telefono ” (testo). Nella prima tabella inserite tre record dove immetterete i seguenti valori: “ 0 ” (zero) nei campi “ visite ” e “ home ”, “ info ”, “ help ” nei campi “ pagina ”.

Bene, ora che sapete muovervi in un database Access, passiamo ad un argomento molto importante.

ADO

ADO (ActiveX Data Object) è una tecnologia che ci permette di dialogare con alcuni tipi di database (Access, SQL Server, Oracle, ecc..). Per utilizzare un database bisogna stabilire una connessione; per fare ciò avete bisogno di stringhe specifiche. Eccone alcuni esempi.

 

- Access

 

“Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\prova\data.mdb;”

 

oppure

 

“DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=c:\prova\data.mdb”

 

- SQL Server

 

“Provider=SQLOLEDB; DataSource=MyServer; Initial Catalog=MyDatabase; User ID=MyUserID; Password=MyPassword;”

 

- Oracle

 

“Provider=MSDAORA; DataSource=MyServer; User ID=MyUserID; Password=MyPassword;”

 

Una volta connessi, è possibile acquisire dati dal database tramite un’istruzione del linguaggio SQL che verrà discussa nel prossimo paragrafo.

Dopo aver raccolto i dati necessari, è necessario creare uno strumento che ci permetta di muoverci all’interno di tutti i record selezionati in precedenza: un cursore. Esso ci permette di muoverci all’interno dell’insieme di record in due direzioni: avanti e indietro. Una volta individuato il record interessato possiamo “lavorare” su tutti i suoi valori (campi). Possiamo anche cancellare e creare record con delle semplici operazioni. Dopo aver eseguito tutte le modifiche desiderate, è consigliabile chiudere il database.

Ecco una breve descrizione dei principali membri degli oggetti “ Connection ” e “ Recordset ” (tutti i metodi eccetto “ Open() ” non richiedono argomenti).

 

Connection

 

Open() - apre una nuova connessione verso un database, richiede come argomento una stringa di connessione come quelle discusse precedentemente.

 

Close() - chiude la connessione al database.

 

Recordset

 

BOF - contiene true se il cursore si trova nel primo record, altrimenti false.

 

EOF - contiene true se il cursore si trova nell’ultimo record, altrimenti false.

 

RecordCount - contiene il numero di record selezionati.

 

State - contiene true se il recordset è aperto, altrimenti false.

 

Open() - apre un nuovo cursore, richiede vari argomenti: il primo è l'istruzione SQL che seleziona i record interessati, il secondo specifica l'istanza dell'oggetto "Connection" utilizzata, il terzo dichiara come si potrà muovere il cursore, il quarto specifica che tipo di blocco utilizzare, infine il quinto argomento ci permette di decidere con che tipo di dati vogliamo avere a che fare (es: testo). Per sapere quali valori (ed il loro effetto) possono assumere i vari argomenti, consultare la documentazione del PWS o IIS.

 

MoveFirst() - muove il cursore al primo elemento selezionato;

 

MoveLast() - muove il cursore all’ultimo elemento selezionato;

 

MoveNext() - muove il cursore verso il seguente record;

 

MovePrevious() - muove il cursore verso il record precedente;

 

Update() - aggiorna i cambiamenti effettuati;

 

Delete() - cancella il record selezionato dal cursore;

 

AddNew() - aggiunge un nuovo record nella tabella.

CENNI DI SQL

SQL (Structured Query Language) è un linguaggio che permette di interrogare un database. Le istruzioni di questo linguaggio sono molte, ma a noi interessa soltanto una: SELECT . La sintassi è la seguente:

 

SELECT valore1 FROM valore2 [WHERE valore3] [ORDERBY valore4 [DESC]]

 

Le parentesi quadre non vanno inserite, stanno solo ad indicare che il loro contenuto è facoltativo.

valore1 va sostituito con la lista dei campi che si vuole selezionare; è possibile anche sostituire l’intera lista con il simbolo * nel caso in cui le liste selezionate siano tutte.

valore2 contiene l’elenco delle tabelle da cui attingere dati.

valore3 stabilisce una o più condizioni del tipo: se nome = Asd allora seleziona anche questo record. valore4 stabilisce quale campo ordinerà i record in ordine alfabetico; DESC fa in modo che i risultati vengano ordinati dalla Z alla A.

ASP e ADO

E’ ora di visualizzare nella pratica le conoscenze fino ad ora acquisite. Osservate bene il listato contenuto nella pagina prova.asp . In quest’occasione, il database viene utilizzato per poter usufruire di un semplice contatore e per visualizzare tutti i dati contenuti in un'agenda. Il form ci introduce alla pagina seguente:

 

risult.asp .

 

La cosa più importante che avrete notato è il modo in cui si accede ai dati di un cursore: recsetA(“visite”), dove al posto di visite dovrete utilizzare il nome del campo interessato. Questa metodologia viene utilizzata sia per accedere a questi dati, sia per modificarli.

Mediante il listato di risult.asp potete comprendere l’utilizzo dei principali metodi messi a disposizione dall’istanza del recordset.

Conclusioni

Con questa lezione abbiamo concluso questo corso di ASP. Spero di avervi spiegato nel migliore dei modi tutti i concetti fondamentali e che non abbiate avuto problemi con i vari listati. Inoltre spero che grazie a questo corso, per approfondire le ASP, avrete solo bisogno della documentazione compresa nell’IIS o nel PWS.

In questa lezione avete imparato come:

·         creare database con Access

·         utilizzare la tecnologia ADO con le pagine ASP

·         utilizzare l’istruzione SELECT del linguaggio SQL .

GLOSSARIO

Record : insieme di valori chiamati campi.

Campo : uno dei valori di tutti i record della medesima tabella.

Database : raccolta di tabelle.

Cursore : strumento che ci permette di navigare all’interno di un insieme di record.

Chiave Primaria : campo/i che conterrà valori che non possono essere ripetuti in più di un record.

Tabella : raccolta di record.

Contatore (di database): tipo di dato attribuibile ad un campo che aumenta automaticamente con l’inserimento di nuovi record.