C# ADO.NET DataReader

In C# ADO.NET, the DataReader is a fundamental component that provides a lightweight and efficient means of reading and accessing data from a Data Source. It is part of the ADO.NET Data Provider, such as the OleDbDataReader for OleDb data sources or the SqlDataReader for SQL Server.

SqlDataReader sqlReader = sqlCmd.ExecuteReader();

The DataReader is designed for stream-based, forward-only, and read-only access to the query results. It sequentially reads the data retrieved from the Data Source, allowing you to access individual columns and rows without loading the entire result set into memory. This makes it particularly useful for handling large datasets or scenarios where memory efficiency is crucial.


ExecuteReader() method

To work with a DataReader, you typically create an instance by calling the ExecuteReader() method on a Command Object, which executes the SQL statement or stored procedure and returns the DataReader. Once you have the DataReader, you can use its various methods and properties to retrieve and manipulate the data.

For example, you can use the Read() method to advance the DataReader to the next row and check if there are more rows available. The GetValue() method allows you to retrieve the value of a specific column in the current row, based on its index or name. Other methods, such as GetString(), GetInt32(), or GetDateTime(), provide type-specific retrieval of values.


It's important to note that the DataReader is a forward-only cursor, meaning you can't move backward or modify the data. However, its read-only nature makes it highly efficient and suitable for scenarios where you primarily need to retrieve and process data.

After you finish working with the DataReader, it's essential to close it by calling its Close() method. This releases the associated resources and closes the underlying connection, if applicable. From the following link you can see in details about these classes in C#.

C# SqlDataReader

C# OleDbDataReader


The C# ADO.NET DataReader is a powerful tool for efficiently reading and accessing data from a Data Source in a stream-based, forward-only, and read-only manner. It offers memory efficiency, making it suitable for handling large datasets, and is commonly used in conjunction with Command Objects to retrieve and process query results.