Then why do we need a DataReader? Sounds that DataSet can do anything.
Jason,
A DataSet cannot do anything on its own. It merely represent a
disconnected chunk of data with any data updates and, optionally,
validation errors, nothing else. You can use it in a variety of ways,
including data binding.
In general, you'd use a DataReader or DataAdapter to populate a
DataSet, make changes to the data in the DataSet either directly or
thru data binding and then use a DataAdapter to submit your changes to
the database.
The above briefly describes the disconnected nature of ADO.NET: you
can acquire any data in a form of a DataSet, pass it around as much as
you like, within a single application or between many apps, make
changes to it (inserts/updates/deletes), and then hand it back to a
DataAdapter to submit the changes to the underlyng data storage.