DataReader is connected object and one can process the rows that are returned by query, one at a time. It discards every row after you have gone through it and so it is extremely fast.It contains only read-only data, so no updates are allowed using DataReader objects.
In DataReader you can not get the no. of records directly from RecordSet.This is similar to VB 6, ForwardOnly RecordSet.
Meanwhile DataSet is disconnected object type.It uses XML to store data
Data reader is much faster then dataset if only selection query is their