Introduzione
Con la tecnologia
ASP è possibile connettersi ad una BaseDati
(Database) per leggere, aggiornare o inserire nuovi dati (in
questo caso Access Microsoft,
visto che la tecnologia ASP
appartiene a Microsoft). In ASP
questa tecnologia è detta ODBC
(open database connectivity). Grazie ai Database è
possibile archiviare grosse quantità di dati con un minimo
sforzo, in seguito risulta molto semplice accedere per
recuperare questi dati quando serviranno. Il componente
preposto a questa attività si chiama
ActiveX Data Object (ADO) che permette la connessione
verso qualsiasi Database che supporti
ODBC tramite un driver
apposito.
Componente ADO
Il primo oggetto che viene utilizzato per
operare su un Database si chiama
Connection che come il nome lascia intendere si
tratta dell'oggetto atto alla connessione col Database. La
sua sintassi è descritta sotto.
var ADOCon = new
ActiveXObject("ADODB.Connection")
Tramite il riferimento
ADOCon è ora possibile
accedere alle proprietà e ai metodi dell'oggetto.
Ma prima di continuare è necessario creare
un Database Access di prova, a questo proposito si apra
Microsoft Access, dall'interfaccia iniziale si scelga
l'operazione di creazione di un nuovo Database e si vada a
salvarlo nella cartella che ospiterà i file di codice ASP,
assegnadogli un nome, ad esempio dipendenti.accdb, sempre da
Access in visualizzazione struttura si crei una nuova
tabella inserendoci i seguenti campi.
campo tipo
id
contatore nome
string cognome
string
telefono
string
Adesso chiudendo la visualizzazione
struttura della tabella la si salva assegnandogli un nome,
ad esempio impiegati. Tornando alla schermata precedente si
visualizza l'elenco delle tabelle create, fare quindi doppio
click sulla tabella impiegati per aprirla ed inserire alcuni
record di prova, basta inserirne due o tre, di più non
servono.
Creare ora un nuovo documento con
estensione .asp e inserire al suo interno il seguente codice
che connette al Database creato precedentemente, lo
interroga e stampa la lista completa dei record presenti al
suo interno.
Connessione Database Access |
|
|
La prima riga di codice dichiara la direttiva necessaria per l'utilizzo del linguaggio da usare. Nella seconda e nell'ultima riga abbiamo
i simboli che rispettivamente rappresentano l'apertura e la chiusura del codice JScript. Proseguendo abbiamo la dichiarazione
di quattro variabili identificate dalla parola riservata var. La prima var sql = "SELECT
* FROM impiegati" dichiara una variabile di tipo stringa (notare che le variabili di tipo stringa devono essere contenute all'interno dei doppi apici)
che contiene la query (interrogazione) che sarà usata per la selezione dei record presenti all'interno del Database. Anche la seconda
var path="dipendenti.accdb" dichiara una variabile di tipo stringa che in questo caso contiene il nome del Database.
La terza var ris dichiara una variabile che in seguito contienerà il RecordSet risultante
dall'interrogazione del Database. Ed infine var ADOCon = new ActiveXObject("ADODB.Connection") dichiara ed
assegna ad ADOCon il riferimento all'oggetto Connection con il quale in seguito sarà possibile
accedere alle sue proprietà ed ai suoi metodi.
Proseguendo nelle due righe di codice successive alla dichiarazione delle variabili
ADOCon.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;"; ADOCon.ConnectionString +="DataSource=" + Server.MapPath(path); possiamo vedere
una proprietà di Connection utilizzata in questo listato che è ConnectionString che contiene la
stringa di connessione al Database. Le informazioni delle stringhe di connessioni generalmente si compongono di coppie chiave=valore;
la chiave è separata dal valore per mezzo del simbolo di uguale ed ogni coppia è separata dalla successiva per mezzo del
punto e virgola. Nella stringa usata in questo listato abbiamo due coppie di valori. L'istruzione che assegna
valore alla seconda coppia Server.MapPath(path) è un metodo dell'oggetto
Server che accetta un parametro stringa che contiene il nome del Database e restituisce il suo percorso assoluto compreso del nome del Database
all'interno del Server. Se al Database fosse stata assegnata una password per accedervi sarebbe stato necessario aggiungere una terza coppia
chiave=valore e cioè ";Jet OLEDB:Database Password=MiaPassword"
Proseguiamo con la successiva riga di codice che è ADOCon.Open(); questa riga apre la connessione al Database
utilizzando la stringa appena creata. La riga di codice ris = ADOCon.Execute(sql); esegue l'istruzione
SQL contenuta e creata in precedenza nella variabile sql, e restituisce il risultato nella variabile
ris che diventa adesso di tipo RecordSet e contiene tutti i record selezionati.
Le successive istruzioni sono contenute all'interno di un ciclo while e servono per stampare sulla pagina del
Browser tutti i campi dei record selezionati.
Comando SELECT
Come specificato nell'introduzione, da un Database è possibile recuperare informazioni, aggiornare informazioni esistenti ed inserirne di nuove,
l'istruzione per il recupero di informazioni è la SELECT, quella per l'aggiornamento di informazioni esistenti è
UPDATE e quella per inserire nuove informazioni è INSERT, la più complicata è certamente la
SELECT che nella sua forma più semplice si presenta così: SELECT * FROM dipendenti che seleziona
tutti i campi di tutti i record presenti nella tabella dipendenti, infatti l'asterisco dice alla SELECT di selezionare tutti i
campi e non essendo presente alcuna clausola verranno selezionati tutti i record.
SELECT nome, cognome, telefono FROM dipendenti WHERE nome="paolo"
Questa SELECT seleziona nome, cognome e telefono (in pratica tutti i campi della tabella dipendenti, quindi si
sarebbe potuto usare l'asterisco) quando nome="paolo" E si si sarebbe voluto cercare "Paolo"?? in questo caso "Paolo"
non è uguale a "paolo" perchè la prima lettera è maiuscola quindi verrebbero selezionati solo i record che nel campo nome sono esattamente uguali a "Paolo". Se
si volesse che in entrambi i casi il record fosse selezionato si sarebbe dovuto usare al posto del simbolo di = la clausola
LIKE, quindi la SELECT si sarebbe presentata così: SELECT nome, cognome,
telefono FROM dipendenti WHERE nome LIKE "paolo".
Volendo selezionare tutti i campi che contengono all'inizio della stringa "Lorenzo" seguita ad esempio da un cognome come "Lorenzo Rossi" o
qualsiasi altra parola o frase si può usare il simbolo di percentuale che significa qualsiasi frase quindi la SELECT questa volta si presenterebbe così: SELECT nome, cognome,
telefono FROM dipendenti WHERE nome LIKE "Paolo%"
Se invece volessimo selezionare qualsiasi stringa che alla fine contiene la parola "Lorenzo" la SELECT si presenterebbe questa volta così: SELECT nome, cognome,
telefono FROM dipendenti WHERE nome LIKE "%paolo"
Se adesso scrivo una SELECT in questo modo: SELECT nome, cognome,
telefono FROM dipendenti WHERE nome LIKE "%paolo%"
Questa seleziona tutti i campi nome, cognome e telefono che contengono nel campo nome una stringa che al suo interno in qualsiasi posizione
contiene "paolo"
La sintassi dell'istruzione SELECT è questa:
SELECT campo1, campo2, campo3, ... FROM tabella WHERE campo1="paolo"
Dove campo1, campo2, campo3, ... è una lista dei campi da selezionare separati da una virgola, e tabella è
il nome della tabella nel quale cercare, campo1="paolo" criterio per la selezione dei record introdotto dalla clausola
WHERE.
Quando i risultati vengono restituiti, come intestazione vengono restituiti i nomi dei campi inseriti nella SELECT, se questi nomi non
sono abbastanza significativi si possono cambiare senza influenzare la tabella principale, in questo modo: SELECT campo1 AS 'Nome' ,
campo2 AS 'Cognome', campo3 AS 'Telefono', ... FROM tabella WHERE campo1="paolo"
Ovviamente tutto quanto detto fino ad adesso riguardo l'istruzione SELECT rappresenta solo una minima introduzione all'argomento, molte
altre sono le clausole e le funzioni che possono essere con SELECT, ma per spiegare tutto riguardo questa istruzione occorre un'altro capitolo.
Comando UPDATE
Con questo comando è possibile aggiornare i dati di uno o più campi già presenti all'interno della tabella. Ad esempio è possibile che in una
tabella come quella creata precedentemente chiamata impiegati, uno degli impiegati già presente al suo interno cambi numero di telefono, ecco quindi che è
necessario un aggiornamento. Vediamo quindi la sintassi di questo comando: UPDATE tabella SET campo=valore WHERE condizione,
quindi supponendo applicato alla tabella impiegati avremmo: UPDATE impiegati SET telefono="3394578396" WHERE telefono="3392864211"
in questo caso come condizione ho usato il campo telefono ma nulla vieta ad esempio di usare qualsiasi altro campo. La seguente istruzione (o comando) per
una maggiore leggibilità può anche essere scritta in questo modo: UPDATE impiegati SET telefono="3394578396" WHERE
telefono="3392864211" è anche possibile in una unica istruzione UPDATE aggiornare più campi, quindi dopo la clausola SET basta inserire più campi
separati da una virgola.
Comando INSERT INTO
Con questo comando è possibile aggiungere all'interno della tabella nuovi record. Vediamo sotto la sintassi: INSERT
INTO tabella (elenco campi) VALUES (elenco valori) ad esempio vediamo sotto una aggiunta nella tabella impiegati: INSERT INTO
impiegati (nome, cognome, telefono) VALUES ("Michele" , "Danzi" , "3348958310") ovviamente il campo id trattandosi di
un campo che si autoincrementa non è necessario coinvolgerlo. Anche qui vediamo come scrivere l'istruzione nel modo più leggibile.
INSERT INTO impiegati ( nome, cognome, telefono ) VALUES (
"Michele", "Danzi", "3348958310" )
Con questo per il momento è tutto.
|