DataReader e DataSet
DataReader eDataSet rispondono a due diverseesigenze.
Il DataReader ha ottimeprestazioni e viene impirgato quando l’esigenzaè di connettersi ai dati in sola lettura e inmodalità forward-only
Il DataSet consenteinvece di eseguire ogni operazione sui dati e di utilizzareefficamente le tecniche diDataBinding ai controlli. IlDataSet è un oggetto di tipo“disconnesso“.
DataReader
Vediamo un esempio di utilizzo.
Viene visualizzata una tabella contenente il titolo, ilnumero di pagine e la collana di una serie di libri contenutiin un database
L’interrogazione eseguita sul database è decisamente banale: sonoestratti i libri la cui edizione risale al 1997 e i dati sonoordinati per titolo del libro.
<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %>
In testa al sorgente notiamo la dichiarazione di alcuni
<%@ Register TagPrefix="cnn" TagName="connection" Src="connessione.ascx" %>
È stato realizzato un file esterno di tipo ascx che contiene unaproprietà con il percorso deldatabase. Torneremo in un’altra puntata adoccuparci dei file ascx,per il momento quello che è sufficiente sapereè che in questo esempio è usato alla stregua diun 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 tipo
A questo punto viene eseguito il metodo ExecuteReader che restituisce un oggettoDataReader pronto perl’uso.
objDataReader = objCommand.ExecuteReader()
Con il metodo Read sonoestratti uno per volta tutti i record delDataReader e viene composta una stringa cherappresenta una riga di una tabella HTML.
Da notare come sia stato creato un oggetto di tipoasp:literal: è un segnaposto per la stringa cherappresenta il contenuto della tabella. Conl’istruzione
risultati.Text = strTabella
il tutto viene poi visualizzato all’interno dellatabella HTML.
DataSet
Vediamo lo stesso esempio applicato ad un oggetto ditipoDataSet. Comedicevamo, non è il caso di utilizzare un DataSet se i dati estratti sonoread-only eforward-only. La prossima puntatavedremo un “vero” caso di applicazione di unoggetto DataSet.
Dim objDataAdapter As New OleDbDataAdapter(strSelect, objConnection)
Dopo la connessione, si dichiara un oggetto di tipo
objDataAdapter.Fill(objDataSet,"Libro")
A questo punto, con il metodo Fill, viene “riempito” il DataSet (che, ricordiamo, èun oggetto disconnesso) con i dati restituiti dallaselezione.
Dim objDataView As New DataView(objDataSet.Tables("Libro"))
È creato poi un oggetto di tipo DataView. Un DataView è una rappresentazione dei datidi un DataSet checonsente di ordinarli e filtrarli secondo criteri impostatidall’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 automatizzarnela visualizzazione.
libri.DataSource = objDataView libri.DataBind()
Come si vede, il DataView è associato all’oggettolibri (un DataGrid) eviene poi richiamato il metodo DataBind per effettuare la visualizzazione deidati, evitando al programmatore la scrittura di codice digestione.
- Articolo precedente i List Controls - Lavorare con gli insiemi di dati
- Articolo successivo Single Value e Repeated Data Binding