The DataSet type is a container for any number of DataTable objects, each of which contains a collection of DataRow and DataColumn objects.
Data adapters are used to push and pull DataSets to and from a given data store. The data adapter object of your data provider handles the database connection automatically. In aneffort to increase scalability, data adapters keep the connection open for the shortest amount of time possible. Once the caller receives the DataSet object, the calling tier is completely disconnected from the database and left with a local copy of the remote data. The caller is free to insert, delete, or update rows from a given DataTable, but the physical database is not updated until the caller explicitly passes the DataSet to the data adapter for updating. In a nutshell, DataSets allow the clients to pretend they are always connected; however, they actually operate on an in-memory database.