Manipulating Data Offline
Despite all these classes, there are
times when you won’t want to write SQL for every
database operation, and you’ll want to be able to
manipulate entire sets of data as a whole without maintaining an open
database connection. The mechanism for such operations is the
DataSet.
A
DataSet is an in-memory representation of a
database. Just as a database contains tables, a
DataSet contains a
DataTableCollection (a collection of
DataTable objects). Just as tables are related to
one another, a DataSet contains a
DataRelationCollection (a collection of
DataRelation objects). Each
DataTable contains a
DataColumnCollection, which represents the
table’s columns, and a
DataRowCollection, which represents the
table’s rows. The DataTable also
contains references to various DataRelation and
Constraint objects, which reflect the underlying
table’s relations and constraints. You can create a
DataSet from scratch and fill it with data, or you
can use an IDbDataAdapter to map a
DataSet to a database.
Figure 11-2 shows the structure of the
DataSet class and its related classes.

Here’s where the
talk about the databases meets the subject of this book, XML. You can
serialize the data and structure of a DataSet to
XML. You can generate a DataSet subclass from an
XML Schema. You can read data from a DataSet as if it were an XML document. ...