I admit it, I've never been a big fan of the DataReader. There are two main reasons for this. Firstly, I'm a big fan of caching, and DataReaders cannot be cached. Thus, even if they are, say, 2x as fast as a DataTable the first time, the cached DataTable