Зміст курсу
Introduction to .NET with C#
Introduction to .NET with C#
2. Asynchronous Programming and Introduction to Web Services
3. Introduction to Databases with .NET
DataReader vs DataSet
In the last section, we used the MySqlDataReader
object to read data from the database.
In theory, DataReader (or MySqlDataReader
) does not retrieve the entire data when we execute a query. Instead, it retrieves data in a sequential manner, which means that it retrieves one row at a time. When we execute the Read() method, it retrieves the next row from the database in real-time.
This is why an active connection to the database is required while retrieving data. This also explains why we need to Close the DataReader object after retrieving data.
On the other hand, we have another method for retrieving data, which is through a DataAdapter. A DataAdapter fetches relevant data from the database and fills a DataSet with the retrieved data, essentially making a copy of that data. A DataSet is a special type of class for storing data retrieved from an SQL database. We can easily access and view data from a DataSet.
Although both methods might seem almost the same, DataReader and DataSet have some significant differences:
Memory Usage and Storage:
- DataReader retrieves data from the database one record at a time and holds a connection open while reading the data. It doesn't store the data in memory.This results in minimal memory usage;
- DataSet stores data retrieved from the database in memory within the application.
Accessibility and Navigation:
- DataReader provides a fast, forward-only stream of data. It allows sequential access to the data and doesn't support random access or navigation. Once a record is read, it cannot be revisited unless the query is executed again;
- DataSet allows you to iterate through rows in any order and modify data within the DataSet without affecting the original data in the database.
Real-Time vs. Disconnected Access:
- DataReader provides real-time access to data from the database. It requires an active connection to the database while reading data, and the connection remains open until all data has been read or until the DataReader is explicitly closed;
- DataSet provides disconnected access to data. Once data is retrieved from the database and stored in the DataSet, the connection to the database can be closed. The data is then available within the application and can be manipulated offline without maintaining a connection to the database.
From the above-mentioned pros and cons, we can conclude that DataReader is suitable for scenarios where forward-only access to data is sufficient, while DataSet is more suitable for scenarios where you want to minimize the connection time and need to work with data interactively.
Все було зрозуміло?