L'inserimento dei dati è una fase molto complessa nello sviluppo di pagine che supportano il database in quanto bisogna stare molto attenti ai dati che vi si immettono e dobbiamo verificare la loro idoneità con i dati richiesti. Per comprenderci meglio, non possiamo assolutamente memorizzare un dato di tipo stringa all'interno di un campo numerico, ma il contrario possiamo farlo.Ora vediamo il codice Asp (che in seguito commenteremo) che ci permette di inserire un nuovo libro nel nostro elenco.
<%
' Definizione della variabile
dim strTitolo
strTitolo = request.form("titolo")
dim strAutore
strAutore = request.form("autore")
dim strGenere
strGenere = request.form("genere")
dim strCode
strCode="innovatel"
' Mappaggio del database
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("libreria.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn
' Stringa di interrogazione sulla tabella libri
sql = "SELECT * FROM libri"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
' Preparazione e scrittura nuovo record
rs.addnew
rs(1) = strTitolo
rs(2) = strAutore
rs(3) = strGenere
rs.update
' Chiusura del database
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
%>
Il codice Asp appena descritto ha il compito di prelevare i dati da un form e inserirli successivamente all'interno del database. In questo script, non viene controllata l'esattezza dei dati. Utile controllo è quello di verificare almeno che i dati siano immessi tutti e non vi siano dei campi vuoti. Per far ciò si può sfruttare tranquillamente una serie di If. Ora torniamo alla spiegazione del codice di partenza.
Per collegare il database al nostro script Asp, utilizzeremo la seguente
sintassi:
dim strCode
strCode="innovatel"
' Mappaggio del database
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="driver={Microsoft Access Driver (*.mdb)}; "
strConn=strConn & " DBQ=" & Server.MapPath("libreria.mdb")
strConn=strConn & ";pwd=" & strCode
Conn.Open strConn
' Stringa di interrogazione sulla tabella libri
sql = "SELECT * FROM libri"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
Incominciamo subito con osservare la presenza e l'inizializzazione della variabile strCode assegnandole il valore innovatel. E' appunto grazie a questo valore che potremo accedere alla nostra banca dati (il database). Successivamente nella variabile strConn viene immessa la stringa di connessione al database di tipo Microsoft Access. Grazie a questa stringa e all'oggetto Conn ed il relativo metodo Open, creeremo la connessione vera e propria al database libreria.mdb (Conn.Open strConn). Nella fase successiva, grazie al linguaggio Sql (Standard Query Language-Si consulti la guida su html.it per maggiori informazioni al linguaggio) si effettua un'interrogazione in modo da estrarre i dati presenti nella tabella su cui desideriamo lavorare. Infine, grazie all'oggetto server ed il metodo CreateObject (Server.CreateObject) andiamo a creare il nostro RecordSet su cui lavoreremo nella prossima fase. Per RecordSet si intende l'insieme di dati (tutti o solo in parte) presenti nella tabella risultante dopo l'interrogazione Sql.
Dopo la prima fase di connessione al database, ora andiamo ad immettere i dati acquisiti nello stesso. Per far questo, bisogna ricordare la struttura del tracciato del record creato in precedenza.
Nome campo
|
Tipo Campo
|
Posizione
|
Id | Contatore |
0
|
Titolo | Stringa |
1
|
Autore | Stringa |
2
|
Genere | Stringa |
3
|
Come potrete notare, alla tabella precedente si è aggiunta una nuova colonna che indica la posizione del campo all'interno del tracciato record. Se il nostro tracciato record contiene N campi, il numero di posizione è compreso tra il valore 0 e N-1. Esaminiamo solo la parte di codice interessata:
rs.addnew
rs(1) = strTitolo
rs(2) = strAutore
rs(3) = strGenere
rs.update
Per inserire i dati all'interno del database, dobbiamo preparare il buffer tramite il comando rs.addnew. Una volta fatto ciò, indichiamo con rs(i) la posizione del RecordSet a cui accedere. Come potete osservare, la posizione rs(0) non viene usata. La domanda è naturale:"Come mai? Lei esiste!" La risposta è semplicissima. In Microsoft Access, come in altri tipi di database, il genere contatore si incrementa da solo ogni volta che viene aggiunto un record al nostro database. Una volta preparato per bene il buffer con tutta la nostra serie di rs(i)=valore, è giunto il momento di intervenire realmente nella scrittura del record all'interno del database. Per far questo compito, sfruttiamo il comando rs.update. Ora possiamo essere certi che il nostro tracciato record è correttamente memorizzato nel nostro database.
Ora, con le ultime quattro righe del listato in questione:
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
Sfruttando le prime due righe iniziali delle sovrastanti, chiudiamo e annulliamo il contenuto dell'oggetto RecordSet creato nella parte iniziale. Stesso lavoro, andremo a fare nelle successive due righe ma questa volta agendo direttamente sulla connessione vera e propria del database.