Data Adapters
Retrieves data from a data source and populates tables in the DataSet. It also resolves changes mode to the DataSet and sends it back to the data source.
DataReader
Retrieves read-only, forward-only stream of data from a database. Results are returned as the query executes and are stored in the network buffer on the client until you request them using the Read method of the DataReader.
How does the DataReader increase application performance?
DataReader retrieves data as soon as it is available and stores only one row at a time in memory.