In ADO.NET, DataReader is a highly optimized, forward-only, and read-only stream of data retrieved from a database. DataAdapter is a bridge used to populate a DataSet, and DataSet is an in-memory, fully navigable cache of data. Thus, DataReader is the correct answer.