Antonio Feliziani
a- a+

DataReader e DataSet

DataReader eDataSet rispondono a due diverse esigenze.

Il DataReader ha ottime prestazioni e viene impirgato quando l’esigenza è di connettersi ai dati in sola lettura e in modalità forward-only

Il DataSet consente invece di eseguire ogni operazione sui dati e di utilizzare efficamente le tecniche diDataBinding ai controlli. IlDataSet è un oggetto di tipo “disconnesso“.

 

DataReader

Vediamo un esempio di utilizzo.

 

Viene visualizzata una tabella contenente il titolo, il numero di pagine e la collana di una serie di libri contenuti in un database Access.

L’interrogazione eseguita sul database è decisamente banale: sono estratti i libri la cui edizione risale al 1997 e i dati sono ordinati per titolo del libro.

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


In testa al sorgente notiamo la dichiarazione di alcuninamespace: grazie a questi decidiamo quale tipo di DataAdapter utilizzare all’interno del programma. In questo caso stiamo usando i DataAdapter relativi ad una sorgente dati Old Db.

    <%@ Register TagPrefix="cnn" TagName="connection" Src="connessione.ascx" %>


È stato realizzato un file esterno di tipo ascx che contiene una proprietà con il percorso deldatabase. Torneremo in un’altra puntata ad occuparci dei file ascx, per il momento quello che è sufficiente sapere è che in questo esempio è usato alla stregua di un file di configurazione.

    Dim objConnection As New OleDbConnection(ctlConnessione.Access)
      objConnection.Open()


Viene quindi dichiarata una connessione ADO.NET a cui è passata la stringa dichiarata nel file ascx.

    Dim objCommand As New OleDbCommand(strSelect,objConnection)   


È adesso il momento di creare un oggetto di tipoCommand a cui è passata la connessione e l’operazione da svolgere (ovvero, la selezione dei libri del 1997).

A questo punto viene eseguito il metodo ExecuteReader che restituisce un oggetto DataReader pronto per l’uso.

    objDataReader = objCommand.ExecuteReader()


Con il metodo Read sono estratti uno per volta tutti i record delDataReader e viene composta una stringa che rappresenta una riga di una tabella HTML.

Da notare come sia stato creato un oggetto di tipo asp:literal: è un segnaposto per la stringa che rappresenta il contenuto della tabella. Con l’istruzione

    risultati.Text = strTabella

il tutto viene poi visualizzato all’interno della tabella HTML.



 

DataSet

Vediamo lo stesso esempio applicato ad un oggetto di tipoDataSet. Come dicevamo, non è il caso di utilizzare un DataSet se i dati estratti sono read-only eforward-only. La prossima puntata vedremo un “vero” caso di applicazione di un oggetto DataSet.

    Dim objDataAdapter As New OleDbDataAdapter(strSelect, objConnection)


Dopo la connessione, si dichiara un oggetto di tipoDataAdapter al quale è passata l’istruzione di selezione da eseguire.

    objDataAdapter.Fill(objDataSet,"Libro")


A questo punto, con il metodo Fill, viene “riempito” il DataSet (che, ricordiamo, è un oggetto disconnesso) con i dati restituiti dalla selezione.

    Dim objDataView As New DataView(objDataSet.Tables("Libro"))


È creato poi un oggetto di tipo DataView. Un DataView è una rappresentazione dei dati di un DataSet che consente di ordinarli e filtrarli secondo criteri impostati dall’utente. In questo caso, però, è utilizzato un oggetto DataView per un altro scopo: il Data Binding. Solo un oggettoDataView può essere “agganciato” ad un controllo per automatizzarne la visualizzazione.

    libri.DataSource = objDataView
    libri.DataBind()


Come si vede, il DataView è associato all’oggetto libri (un DataGrid) e viene poi richiamato il metodo DataBind per effettuare la visualizzazione dei dati, evitando al programmatore la scrittura di codice di gestione.



Ti potrebbe interessare anche

commenta la notizia

Ci sono 1 commenti