web
Come utilizzare i DataBase di Microsoft, connessione alla fonte dati usando la tecnologia di ASP (Active Server Page) Access
         il mio computer  
 

Asp e Database

Pubblicato il: 28-4-2020

Ultima Modifica: 6-1-2024

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 copia

 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.