sei sul sito di Giovanni Fraterno
Dato che le operazioni di aggiornamento e cancellazione sono potenzialmente
dannose per i database, le suddette operazioni sono
di norma disattivate.
Per attivarle
bisogna abilitare l’utente Everyone accedendo all’opzione Proprietà
e alla scheda Protezione del file Access con
il nostro database.
L’abilitazione dell’utente
Everyone consente al potenziale navigatore web che entra nel nostro sito, di accedere, attraverso delle procedure ASP, alle informazioni
del nostro database, ed appunto usufruendo dei permessi
in scrittura e modifica dei dati.
Visto come connettersi al database, e una volta impostati i permessi, è possibile finalmente procedere con le operazioni sul database.
Vediamo allora come interagire con quest’ultimo.
L’obiettivo è gestire record e campi di una tabella presente
all’interno di un database.
Per gestire i record abbiamo
bisogno di un oggetto particolare chiamato RECORDSET.
Il RECORDSET
è una sorta di contenitore virtuale che viene riempito con il risultato
di una query SQL, query cui è stato
sottoposto il nostro database.
Nel successivo esempio viene effettuata un’interrogazione della tabella utenti contenuta nel database prova.mdb
<%
Set conn=Server.CreateObject("ADODB.Connection")
str="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &Server.MapPath("prova.mdb")&";
Persist Security Info=False"
conn.open str
set
rds_utenti=conn.execute("select * from utenti")
%>
Il contenuto
dell’interrogazione viene copiato nella variabile rds_utenti di tipo recordset.
La presenza dell’asterisco
nell’interrogazione fa si che in rds_utenti vengano copiati tutti
i record e tutti i campi del nostro
database prova.mdb
A completamento
del precedente esempio, di seguito viene anche mostrata una procedura iterativa che occorre aggiungere al precedente codice ASP, con il fine di
visualizzare nella pagina web, i dati acquisiti grazie all’impiego del recordset appunto
mostrato prima.
<table>
<tr>
<td>
<td>COGNOME</td>
</tr>
<%
do while not
rds_utenti.eof
response.write "<tr>"
response.write "<td>"
response.write rds_utenti.fields("nome")
response.write "</td>"
response.write "<td>"
response.write rds_utenti.fields("cognome")
response.write "</td>"
response.write "</tr>"
rds_utenti.movenext
loop
%>
</table>
Il ciclo Do While……..Loop
viene predisposto con una condizione nell’intestazione che sfrutta una
proprietà, associata al recordset, di tipo vero o falso (End Of File siglato eof).
Proprietà che appunto determina la fine del ciclo dopo l’ultimo record, e
ciò dato che la suddetta proprietà commuta dal valore falso
a quello vero.
E’ anche presente il metodo rds_utenti.movenext, e che sostanzialmente fa incrementare di una posizione il record puntato da
recordset.
Utile è anche il metodo movefirst (non presente nell’esempio di cui sopra),
e che riporta il recordset alla prima posizione.
Da notare anche l’istruzione
response.write con rds_utenti.fields(“nome”)
e rds_utenti.fields("cognome"), e che consentono la visualizzazione
sul video dell’elenco degli utenti presenti nel database classificati per nome e per cognome, utenti
intabellati grazie ai tag delle tabelle HTML, tag inseriti all’interno del codice
ASP.
Naturalmente è
possibile inserire all’interno di una query SQL anche valori provenienti da una FORM grazie all’impiego dell’oggetto REQUEST.
Il successivo esempio mostra
una query che cerca all’interno della tabella
utenti tutte le persone che si chiamano Mario, dopodichè li ordina
per cognome dalla A alla Z:
<%
Set conn=Server.CreateObject("ADODB.Connection")
str="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &Server.MapPath("prova.mdb")&";
Persist Security Info=False"
conn.open str
var_nome="Mario"
set
rds_utenti=conn.execute("select * from utenti where
%>
<table>
<tr>
<td>
<td>COGNOME</td>
</tr>
<%
do while not
rds_utenti.eof
response.write "<tr>"
response.write "<td>"
response.write rds_utenti.fields("nome")
response.write "</td>"
response.write "<td>"
response.write rds_utenti.fields("cognome")
response.write "</td>"
response.write "</tr>"
rds_utenti.movenext
loop
%>
</table>
.
Chiaramente, modificando il valore della variabile var_nome sarà possibile effettuare
delle ricerche per altri nomi.
Anche ora la variabile var_nome
potrebbe benissimo contenere anche un valore
proveniente da una FORM grazie all’impiego dell’oggetto REQUEST.
Insomma, una pagina web che
visualizza i risultati di una query, può
essere preceduta da una pagina web con una FORM, pagina che chiede al navigatore i parametri per personalizzare la query stessa,
parametri smistati ad una pagina di destinazione,
la vera delegata ad interagire con il nostro
database.
Vediamo infine le operazioni
mirate all’inserimento, all’aggiornamento e alla cancellazione
dei dati su di un database.
Il successivo esempio mostra
una operazione di
inserimento.
<%
Set conn=Server.CreateObject("ADODB.Connection")
str="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &Server.MapPath("prova.mdb")&";
Persist Security Info=False"
conn.open str
var_nome="Giuseppe"
var_cognome="Napoleone"
set rds_utenti=conn.execute("INSERT
INTO utenti(NOME, COGNOME) VALUES('"& var_nome &"',
'"& var_cognome & "') ")
%>
Ovviamente, anche in questo caso, rimane valido il discorso
fatto circa l’impiego di una FORM.
La successiva procedura
invece mostra una operazione
di aggiornamento.
<%
Set conn=Server.CreateObject("ADODB.Connection")
str="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &Server.MapPath("prova.mdb")&";
Persist Security Info=False"
conn.open str
var_nome="Olga"
var_cognome="Russo"
set rds_utenti=conn.execute("UPDATE
utenti SET NOME='"& var_nome &"', COGNOME='"&
var_cognome &"' WHERE id_utente=1")
%>
Ovviamente, anche in questo caso, rimane valido il discorso
fatto circa l’impiego di una FORM.
La successiva procedura
infine mostra una operazione
di cancellazione.
<%
Set conn=Server.CreateObject("ADODB.Connection")
str="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=" &Server.MapPath("prova.mdb")&";
Persist Security Info=False"
conn.open str
set
rds_utenti=conn.execute("delete from utenti where id_utente=1")
%>
Ovviamente, anche in questo caso, rimane valido il discorso fatto circa l’impiego di una FORM.