The result returned by sqldatareader is a read-only and forward-only data stream. Each call to read() gets a record, and it is loaded into memory to replace the previous record in memory.
You can use a CreateDataReader method on a dataset or datatable. This method returns a datatablereader. This object is similar to sqldatareader, and it is only read-only. The convenience is that you can return