Contenuti del Corso
Introduzione a .NET con C#
Introduzione a .NET con C#
Datareader vs Dataset
Nell'ultima sezione, abbiamo utilizzato l'oggetto MySqlDataReader
per leggere i dati dal database.
In teoria, DataReader (o MySqlDataReader
) non recupera tutti i dati quando eseguiamo una query. Invece, recupera i dati in modo sequenziale, il che significa che recupera una riga alla volta. Quando eseguiamo il metodo Read(), viene recuperata la riga successiva dal database in tempo reale.
Per questo motivo è necessaria una connessione attiva al database durante il recupero dei dati. Questo spiega anche perché è necessario chiudere l'oggetto DataReader dopo aver recuperato i dati.
D'altra parte, esiste un altro metodo per recuperare i dati, ovvero tramite un DataAdapter. Un DataAdapter recupera i dati rilevanti dal database e riempie un DataSet con i dati ottenuti, creando di fatto una copia di tali dati. Un DataSet è una particolare classe utilizzata per memorizzare dati recuperati da un database SQL. È possibile accedere e visualizzare facilmente i dati da un DataSet.
Anche se entrambi i metodi possono sembrare quasi identici, DataReader e DataSet presentano alcune differenze significative:
Utilizzo della memoria e archiviazione:
DataReader recupera i dati dal database un record alla volta e mantiene aperta la connessione durante la lettura dei dati. Non memorizza i dati in memoria. Questo comporta un utilizzo minimo della memoria;
DataSet memorizza i dati recuperati dal database in memoria all'interno dell'applicazione.
Accessibilità e Navigazione:
DataReader fornisce un flusso di dati veloce e solo in avanti. Consente l'accesso sequenziale ai dati e non supporta l'accesso casuale o la navigazione. Una volta che un record è stato letto, non può essere rivisitato a meno che la query non venga eseguita nuovamente;
DataSet consente di iterare tra le righe in qualsiasi ordine e di modificare i dati all'interno del DataSet senza influire sui dati originali nel database.
Accesso in tempo reale vs. disconnesso:
DataReader offre accesso in tempo reale ai dati dal database. Richiede una connessione attiva al database durante la lettura dei dati e la connessione rimane aperta fino a quando tutti i dati non sono stati letti o fino a quando il DataReader non viene chiuso esplicitamente;
DataSet offre accesso disconnesso ai dati. Una volta che i dati sono stati recuperati dal database e memorizzati nel DataSet, la connessione al database può essere chiusa. I dati sono quindi disponibili all'interno dell'applicazione e possono essere manipolati offline senza mantenere una connessione al database.
Dai vantaggi e svantaggi sopra menzionati, si può concludere che DataReader è adatto per scenari in cui è sufficiente un accesso solo in avanti ai dati, mentre DataSet è più adatto per scenari in cui si desidera minimizzare il tempo di connessione e si ha la necessità di lavorare interattivamente con i dati.
1. Quale delle seguenti affermazioni su DataReader è vera?
2. Cosa memorizza il DataSet in memoria?
Grazie per i tuoi commenti!