sei sul sito di Giovanni Fraterno

ATTENZIONE che, per importanza sociale, subito dopo il legame affettivo che si instaura all'interno di una famiglia, viene quello che si instaura fra il professore e i suoi alunni, e che turbare entrambi i rapporti può essere carico di conseguenze (sabato 31° gennaio 2004, il professore).
10) Operazioni sui database con l’SQL
( 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 )

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>NOME</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 NOME='"& var_nome &"' order by COGNOME")

%>

 

<table>

<tr>

<td>NOME</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.



utenti in questo momento connessi alla rete di siti web di Giovanni Fraterno: