Sei in: Per i Webmaster - Corso di ASP - Oggetto Connection
In passato la connessione a un database era una procedura
piuttosto complessa in quanto era necessario conoscere una API
(Application Programming Interface) a basso livello per ogni database che
si voleva utilizzare. Con la creazione di ODBC (Open Database
Connectivity) si è cercato di fornire agli sviluppatori una API universale
per l'accesso ai dati; la maggior parte dei database si è adeguata allo
standard ma ODBC necessitava ancora di chiamate a basso livello per la
gestione dei dati. Inizialmente la soluzione proposta da Microsoft fu DAO
(Data Access Objects) seguita da RDO (Remote Data Objects) e infine da ADO
(ActiveX Data Objects). Per ovviare al fatto che anche DAO e RDO
richiedevano che i dati fossero in formato SQL (Structured Query
Language), Microsoft ha introdotto OLEDB, un oggetto di accesso ai dati
basato su COM che consente l'accesso a tutti i tipi di dati. Si può dire
che OLEDB sostituisce ODBC in quanto include un driver ODBC che assicura
la compatibilità con tutte le origini dati ODBC. ADO permette ad una
pagina ASP una facile connessione ai database e tramite i suoi cinque
principali oggetti incorporati (Connection, Recordset, Command, Record e
Stream) consente la manipolazione dei dati.
L'oggetto
Connection
Prima di poter utilizzare un database, è necessario
effettuare una connessione. L'oggetto Connection contiene le informazioni
relative all'archivio dati da utilizzare. L'istruzione per aprire una
connessione è molto semplice:
Dim objCon
Set objCon =
Server.CreateObject("ADODB.Connection")
A questo punto serve una
stringa di connessione che identifichi che tipo di archivio dati si
intende utilizzare. Nel caso di un database Access la stringa si
presenterebbe come segue:
objCon.ConnectionString = "Provider =
Microsoft.Jet.OLEDB.4.0; Data Source = C:\percorso\nomefile.mdb"
In
questo caso abbiamo utilizzato un cosiddetto Provider OLEDB specifico per
il collegamento con Access. In alternativa la stringa potrebbe fare
riferimento ad un driver ODBC e allora la stringa
sarebbe:
objCon.ConnectionString = "Driver = {Microsoft Access
Driver (*.mdb)}; DBQ = C:\percorso\nomefile.mdb"
Le stringhe
variano a seconda dell'archivio dati cui ci si vuole connettere. Una volta
fatto questo, si apre definitivamente la connessione
con:
objCon.Open
In alternativa si può anche utilizzare una
forma abbreviata:
Dim objCon
Set objCon =
Server.CreateObject("ADODB.Connection")
objCon.Open "Driver={Microsoft
Access Driver (*.mdb)};DBQ=C:\percorso\nomefile.mdb"
Ipotizziamo di
avere molte pagine che necessitino di connettersi allo stesso archivio
dati. Come si potrebbe fare per evitare di scrivere le stesse istruzioni
in ogni pagina? In questo caso ci viene incontro l'SSI (server-side
include) per l'inclusione di file lato server. Significa che si possono
creare uno o più file esterni che possono essere inclusi in tutte le
pagine che ne hanno bisogno e che possono contenere delle istruzioni che
saranno elaborate dal server come se fossero all'interno della pagina
stessa. Vediamo un esempio di file da includere:
Dim path, objCon
path = "percorso\nomefile.mdb"
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & server.MapPath(path)
Solitamente sui libri di testo si consiglia di chiamare i file da includere con una estensione .inc, io consiglio invece di continuare a chiamare questi file con una estensione .asp. Nel caso in cui un utente scoprisse l'indirizzo diretto ad un vostro file .inc, potrebbe aprirlo come un normale file di testo; lasciandolo come .asp questo non accadrebbe. Bene, ipotizziamo di salvare il nostro file come inc_opendb.asp e vediamo qual è l'istruzione per l'inclusione:
<!--# include file="percorso/inc_opendb.asp"-->
Fino ad ora abbiamo parlato di connessioni cosiddette
DSN-less, dove per DSN si intende Data Source Name. Le connessioni DSN
solitamente si possono utilizzare quando si ha libero accesso alle
impostazioni del pannello di controllo del server che ospita il nostro
sito Internet. Infatti, per impostare una di queste connessioni su Windows
2000, bisognerebbe andare in Pannello di Controllo --> Strumenti di
amministrazione --> Origine dati (ODBC) --> DSN di Sistema e
impostare un nome per la connessione, il tipo di driver da utilizzare e il
percorso più il nome dell'archivio dati al quale si fa riferimento. Una
volta fatto questo, l'istruzione da mettere all'interno delle pagine
sarebbe la seguente:
Dim objCon
Set objCon =
Server.CreateObject("ADODB.Connection")
objCon.Open
"nomeDSN"
dove nomeDSN è il nome impostato nel Pannello di
Controllo.
Una volta che la connessione all'archivio dati non è più
necessaria, si deve chiudere la connessione e ripulire la memoria del
server come segue:
objCon.Close
Set objCon =
Nothing
Esiste una collection nell'oggetto Connection chiamata
Properties che contiene un'istanza dell'oggetto Property per ogni
proprietà supportata dalla connessione. Per vedere quindi le proprietà
della connessione utilizzata, si potrebbe procedere come segue:
<%
Dim path, objCon, objProperty
path = "percorso\nomefile.mdb"
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.Open "Driver={Microsoft Access Driver
(*.mdb)};DBQ=" & server.MapPath(path)
For Each
objProperty In objCon.Properties
Response.Write objProperty.Name & ": " & objProperty.Value &
"<br>"
Next
objCon.Close
Set objCon =
Nothing
%>
Oltre ad osservare tutte le proprietà, non si può fare molto con l'oggetto Connection. Per poter usare i dati contenuti in un database, occorre utilizzare un altro oggetto di ADO, l'oggetto Recordset.
