Supporto Live

Leggere e visualizzare informazioni da un database via Web

Home » Articoli tecnici » Leggere e visualizzare informazioni da un database via Web

L`interazione con i database è alla base del web dinamico e in particolare del funzionamento della maggiorparte dei portali e siti con aggiornamento frequente dei contenuti.

La seguente guida pratica vuole essere un veloce punto di riferimento per chi vuole iniziare a sfruttare al meglio lo spazio web fornito da Loginstudio. Il tutorial è tuttavia consigliato a chi ha delle buoni basi tecniche di impaginazione html e una sufficiente conoscenza della terminologia specifica.

Per seguire i passaggi seguenti è sufficiente utilizzare un`applicazione di tipo notepad  (es. il blocco note di windows), Microsoft Access (versione 2000 o successive) e un client per la pubblicazione via FTP (fai clic qui per leggere l’articolo sulla Pubblicazione del sito via FTP).

Nota. Le procedure che seguono possono essere adottate anche per collegamenti ad altre tipologie di fonti di dati (es. MySql, MsSqlServer, SqLite, Oracle, etc..).
Le regole di sintassi SQL possono tuttavia in alcuni casi dover subire lievi variazioni se si sceglie di cambiare la tipologia di database.

Il codice seguente è basato sulla tecnologia ASP.Net, il linguaggio utilizzato è C#.
Potete provare a far funzionare lo script direttamente nello spazio web fornitovi, in alternativa potete configurare il vostro PC emulando il funzionamento di un server con IIS. A tal proposito fate riferimento alla guida di Windows.

CREAZIONE DELLA PAGINA DINAMICA PER LA LETTURA DI UN ELENCO UTENTI

Passaggio 1
Lanciate il programma Microsoft Access.
Nota. Per chi non dispone di Microsoft Access è possibile trovare in rete programmi alternativi per la gestione di file .mdb gratuiti o a prezzi molto accessibili.

Passaggio 2
Create un nuovo database vuoto e salvatelo sul desktop con nome Database.mdb.

Passaggio 3
Create una nuova tabella mediante la visualizzazione struttura e aggiungete i campi seguenti: Nome, Cognome, Nazione. Salvate la tabella con nome Utenti e chiudete la finestra.
Fate doppio clic sulla tabella appena creata e riempite alcune righe con nomi fittizi.

Passaggio 4
Lanciate il vostro programma Blocco Note e incollate il seguente codice (Xhtml, Asp.Net, C#).

<%@ Page Language="C#" Debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">

//la funzione Page_Load contiene tutto quello che viene eseguito per primo al caricamento della pagina lato server.
protected void Page_Load(Object Src, EventArgs E)
{

       //dichiariamo e inizializziamo le variabili che contengono rispettivamente la stringa provider (per chiamare il database) e la stringa SQL (per interrogare la tabella Utenti contenuta nel database)
       string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Database.mdb");
       string strSql = "select * from Utenti Order By Cognome Asc ;";
      
       //la classe OleDbConnection permette di creare oggetti (connessione) per l’apertura di una connessione al database
       OleDbConnection connessione = new OleDbConnection();
       connessione.ConnectionString = strProvider;
       connessione.Open();

       //la classe OleDbDataAdapter permette di istanziare comandi da eseguire nel database (nel nostro caso vogliamo semplicemente interrogarlo)
       OleDbDataAdapter cm = new OleDbDataAdapter(strSql, connessione);

       //la classe DataSet consente di creare dei contenitori da legare in modo diretto ai controlli dinamici di ASP.Net
       DataSet ds = new DataSet();
       cm.Fill(ds, 0, 5000, "Utenti");
       connessione.Close();

       //binding del dataset sul controllo server Repeater di ASP.Net
       AreaRipetuta.DataSource = ds;
       AreaRipetuta.DataBind();
}

</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <title>Lettura utenti</title>
</head>
<body>
       <h1>Elenco utenti</h1>
       <hr />
       <!-- Il controllo Repeater contiene il tag server ItemTemplate all’interno del quale poter specificare le istruzioni che genereranno in un ciclo finito l’elenco degli utenti recuperato dal database -->
       <asp:Repeater id="AreaRipetuta" runat="server">
             <ItemTemplate>
                    Cognome:
                    <%# DataBinder.Eval(Container.DataItem, "Cognome").ToString() %>
                    <br />
                    Nome:
                    <%# DataBinder.Eval(Container.DataItem, "Nome").ToString() %>
                    <br />
                    Nazione:
                    <%# DataBinder.Eval(Container.DataItem, "Nazione").ToString() %>
                    <br />
                    <hr />
             </ItemTemplate>
       </asp:Repeater>
       <div align="right"><em>Script By <a href="http://www.loginstudio.com">Loginstudio.com</a></em></div>
</body>
</html>

Passaggio 5
Salvate il file con il nome Lettura.aspx e pubblicatelo assieme al database nella directory principale del vostro spazio web (o in una sottocartella).

Passaggio 6
Chiamate il file con un browser tramite l’indirizzo http://www.dominio.x/lettura.aspx

ANALISI DEL CODICE SCRIPT LATO SERVER

<%@ Page Language="C#" Debug="true"%>

Nella prima riga è specificata la direttiva Page nella quale è specificato il linguaggio in uso (C#) ed eventuali altre proprietà (es. Debug, il quale consente la visualizzazione completa di eventuali messaggi di errore in modo da facilitare la localizzazione e rimozione di errori nel codice).

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

La seconda e la terza riga sono una direttiva Asp.Net per l’importazione dei Namespace. Un Namespace è come un contenitore di classi con le quali è possibile istanziare oggetti, in questo caso necessari all’utilizzo del database.

protected void Page_Load(Object Src, EventArgs E)

All’interno del tag <script...>...</script> è contenuta l’unica funzione Page_Load all’interno della quale avvengono le seguenti operazioni:

string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Database.mdb");

- viene specificata la stringa provider (la stringa provider è l’istruzione utilizzata dai componenti OleDb per connettersi al database);

string strSql = "select * from Utenti Order By Cognome Asc ;";

- viene specificata la stringa SQL con ordinamento crescente dal cognome (è una stringa che contiene le istruzioni per l’interrogazione al database secondo il linguaggio standard SQL);

OleDbConnection connessione = new OleDbConnection();
connessione.ConnectionString = strProvider;
connessione.Open();

- si avvia la connessione al database creando un oggetto basato sulla classe OleDbConnection;

OleDbDataAdapter cm = new OleDbDataAdapter(strSql, connessione);

- si esegue il comando SQL tramite un oggetto di tipo OleDbDataAdapter;

DataSet ds = new DataSet();
cm.Fill(ds, 0, 5000, "Utenti");
connessione.Close();

- si riempie il DataSet (il DataSet è come un contenitore virtuale di più tabelle) e si chiude la connessione;

AreaRipetuta.DataSource = ds;
AreaRipetuta.DataBind();

- si esegue il binding del dataset sul controllo server html Repeater, consentendo la visualizzazione dei risultati all’utente;

ANALISI DEL CODICE HTML

Il codice html è molto semplice. L’unico aspetto su cui porre attenzione è il tag <asp:Repeater> ...</asp:Repeater>. Si tratta di un controllo server Asp.Net che può essere caricato con un dataset tramite il cosiddetto binding.

<asp:Repeater id="AreaRipetuta" runat="server">
    <ItemTemplate>
        Cognome:
        <%# DataBinder.Eval(Container.DataItem, "Cognome").ToString() %>
        <br />
        Nome:
        <%# DataBinder.Eval(Container.DataItem, "Nome").ToString() %>
        <br />
        Nazione:
        <%# DataBinder.Eval(Container.DataItem, "Nazione").ToString() %>
        <br />
        <hr />
    </ItemTemplate>
</asp:Repeater>

All’interno del tag suddetto troviamo il tag <ItemTemplate>...</ItemTemplate>, dentro il quale poter impostare una sezione html che si intende ripetere recuperando di volta in volta i valori dai vari record del database. I valori vengono di fatto recuperati con il metodo DataBinder.Eval all’interno dei tag server <% ... %>.
Utilizzando l’esempio appena fornito potete ampliare il database e recuperare ulteriori campi per il rendering in html.
Per approfondimenti si consiglia lo studio di Asp.Net.


Autore: Antonio Di Dia
Ultimo aggiornamento: 16/02/2008

Scarica allegato | Stampa pagina | Social Bookmark Oknotizie del.icio.us


Home | Registrazione Dominio | Scegliere Loginstudio | Istruzioni | Chi siamo | Assistenza tecnica | Glossario dei termini |
Piani di Hosting | Contattaci | Privacy | Condizioni del servizio | Preferiti | Progetti