ASP e i database: parte prima




ADO (ActiveX Data Object) è una libreria di oggetti, mediante cui è possibile accedere ai database ed effettuare su essi le operazioni di gestione in locale o da una stazione della rete. 
ADO è una tecnologia COM ed è come tale indipendente dall'ambiente di sviluppo. Possiamo  quindi utilizzarla sia con i linguaggi di programmazione come Visual Basic, Visual C++ e Java che con i linguaggi di scripting come javascript o vbscript. 
Gli oggetti di ADO come tutti gli oggetti espongono metodi e proprietà (che possono a loro volta essere oggetti). In aggiunta essi contengono collections: una collection è un "contenitore" di oggetti referenziabile da chi programma come un array.

Gli oggetti di ADO che prenderemo in considerazione sono : 

Per utilizzare un oggetto Connection o Recordset, occorre crearne un'istanza con il metodo CreateObject dell’oggetto Server . Per es.

conn   =    Server.CreateObject("adodb.connection") 

recS   =   Server.CreateObject("adodb.recordset")

dove Conn e RecS sono variabili utente che istanziano i due oggetti, mentre adodb è il nome del componente COM che fornisce gli oggetti ADO



L'oggetto Connection

Effettua le operazioni di apertura, configurazione e chiusura sul database. 

La connessione viene aperta con il metodo Open

Il database può essere aperto in due modi: utilizzando il nome DSN (Data Source Name) registrato su ODBC, oppure stabilendo una connessione diretta senza usare ODBC. 

In ogni caso bisogna fornire al metodo quella che viene chiamata la stringa di connessione


Connessione  ODBC

Open Database Connectivity (ODBC) è un'interfaccia di programmazione che consente alle applicazioni di accedere ai DBMS (come Access, Paradox, SQL Server etc...) che utilizzano il linguaggio SQL come standard per l'accesso ai dati.

Esempio: 

//Creiamo un istanza dell'oggetto connection

<% conn=Server.CreateObject("adodb.Connection") %>

//apriamo un database specifico: 

<% conn.Open("DSN=emiodb") %>

la stringa di connessione è in questo caso DSN=emiodb in cui nome  emiodb  è il  DSN del database, un alias con cui ODBC referenzia il nostro database. Ovviamente è necessario preliminarmente aprire il servizio ODBC  e creare il DSN per il database che ci interessa

Quando si finisce di utilizzare il database si chiama il metodo Close

<% conn.Close() %>


Connessione senza ODBC

In questo caso occorre specificare il provider e il path del file *.mdb

<% conn=Server.CreateObject("adodb.Connection")

//utilizziamo il motore database di Microsoft

conn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source=C:/agenda.mdb") 

 In alternativa è possibile utilizzare la proprietà Provider :

conn=Server.CreateObject("adodb.connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0" 

conn.Open ("c:/agenda.mdb")

 
%>



L'oggetto Recordset

Dopo aver aperto il database, si può accedere alle tabelle ed eseguire query. Per aprire una tabella o una query si devono eseguire i seguenti passaggi:

  1. creare un'istanza dell'oggetto Recordset

        <% recS = Server.Createobject(“adodb.recordset") %>
  2. agganciare recordset al database 

        <% recS.ActiveConnection = conn %>
  3. referenziare la tabella o query da eseguire

        <% recS.source=”Elenco”   %>   
                    
    oppure
        <% recS.source=" SELECT nome, cognome, telefono FROM Elencoi ORDER BY cognome" %>
  4. aprire il recordset

     <% recS.Open() %>

Ora vediamo come si fa a visualizzare i campi della nostra tabella/query.

All'apertura innanzitutto il puntatore al recordset è posizionato automaticamente sul primo record. Per scorrere i successivi record si utilizza il metodo movenext() . Occorre naturalmente controllare che non si finisca oltre l'ultimo record o che il recordset non sia vuoto. A questo fine vanno utilizzate le due proprietà

Infine per referenziare i campi di ogni record teniamo presente che l'oggetto recS è una collection ed è pertanto referenziabile come un array di oggetti. Per es. il valore del campo cognome del record corrente sarà 
recS("cognome").

<% while (!recS.eof ) { 
             Response.write( recS("cognome")+ "  " + recS("nome")+ "  "+ recS("telefono")+"<br>" )
             recS.movenext()
       }
  %>

Aggiunta di un nuovo record 

Per aggiungere un record ad una tabella si usa il metodo AddNew(). Lo script che segue illustra come fare

<% recS.AddNew()

//inserimento dei valori nei campi

recS("nome")="Paolo"
recS("Cognome")="Rossi"
recS("telefono")="123456789"

//aggiornamento della tabella 

recS.Update()

%>