DataSet provides a disconnected representation of result sets from the Data Source, and it is completely independent from the Data Source.
The Dataset can work with the data without knowing the source of the data coming from. DataSet provides much greater flexibility when dealing with related Result Sets. It gives a better advantage over DataReader , because the DataReader is working only with the connection oriented Data Sources.
A DataSet is a container for one or more DataTable objects that contain the data you retrieve from the database. We can set up Data Relations between these tables within the DataSet. The DataAdapter Object allows us to populate DataTables in a DataSet. We can use Fill method of the DataAdapter for populating data in a Dataset. The DataSet can be filled either from a data source or dynamically. From the following chapters you can learn more about Dataset and its operations.