The DataReader object represents a read-only, forward-only stream of data, which is ideal for quickly retrieving query results. The DataReader is useful if you don't need the full support for versioning and change tracking provided by the DataSet . Best of all, because the DataReader loads only a single row into memory at a time, it has a small in-memory footprint.
You can't create a DataReader directly. Instead, you must use the ExecuteReader( ) method of a Command object that returns a DataReader . Chapter 5 presents complete examples that show how to use the DataReader in various scenarios.