Connected and Disconnected Data
As mentioned earlier, ADO.NET supports two different programming environments: connected and disconnected.
The connected environment provides
forward-only, read-only access to data in the data source and the
ability to execute commands against the data source. The connected
classes provide a common way to work with connected data regardless
of the underlying data source. They include
Connection
, Command
,
DataReader
, Transaction
,
ParameterCollection
, and
Parameter
classes.
The disconnected environment allows data
retrieved from the data source to be manipulated and later reconciled
with the data source. The disconnected classes provide a common way
to work with disconnected data regardless of the underlying data
source. They include the DataSet
,
DataTable
, DataColumn
,
DataRow
, Constraint
,
DataRelationship
, and DataView
classes.
Finally, ADO.NET introduces the connected
DataAdapter
class to bridge the data source and
disconnected classes by way of the connected classes. The
DataAdapter
is an abstraction of the connected
classes that simplifies filling the disconnected
DataSet
or DataTable
classes
with data from the data source and updating the data source to
reflect any changes made to the disconnected data. Figure 1-1 shows the relationship between the connected
and disconnected classes in ADO.NET.
Connected Classes
The following classes are used by ADO.NET to communicate directly with the data source:
-
Connection
Maintains information required to connect to the data source through a connection string. The connection string contains information such as the name of the data source and its location, and authorization credentials and settings. The
Connection
class has methods to open and close the connection, for transactions to be initiated on the connection, as well as control other properties of the connection.-
Command
Executes SQL statements or stored procedures against the data source. The command class has a
ParameterCollection
object containingParameter
objects that allow parameterized SQL statements and stored procedures to be used against the data source.-
DataReader
Provides connected forward-only, read-only access to the data source. It is optimized for speed. The
DataReader
is instantiated through aCommand
object.-
Parameter
Allows parameters for both parameterized queries and stored procedures to be defined and set to appropriate values. The
Parameter
class is accessed through theParametersCollection
object within aCommand
object. It supports input and output parameters as well as return values from stored procedures.-
Transaction
Allows transactions to be created on a connection so that multiple changes to data in a data source are treated as a single unit of work and either all committed or cancelled.
-
DataAdapter
Bridges the data source and the disconnected
DataSet
orDataTable
classes. TheDataAdapter
wraps the connected classes to provide this functionality. It provides a method to retrieve data into a disconnected object and a method to reconcile modified data in the disconnected object with the data source. TheCommandBuilder
class can generate the logic to reconcile changes in simple situations; custom logic can be supplied to deal with complex situations and optimize performance.
Disconnected Classes
The following ADO.NET classes allow data to be retrieved from the
data set, examined and modified offline, and reconciled with the data
source through the DataAdapter
:
-
DataSet
Provides a consistent way to deal with disconnected data completely independently of the data source. The
DataSet
is essentially an in-memory relational database, serving as a container for theDataTable
,DataColumn
,DataRow
,Constraint
, andDataRelation
objects.The XML format serializes and transports a
DataSet
. ADataSet
can be accessed and manipulated either as XML or through the methods and properties of theDataSet
interchangeably; theXmlDataDocument
class represents and synchronizes the relational data within aDataSet
object with the XML Document Object Model (DOM).-
DataTable
Allows disconnected data to be examined and modified through a collection of
DataColumn
andDataRow
classes. TheDataTable
allows constraints such as foreign keys and unique constraints to be defined using theConstraint
class.-
DataColumn
Corresponds to a column in a table. The
DataColumn
class stores metadata about the structure of the column that, together with constraints, defines the schema of the table. TheDataColumn
can also create expression columns based on other columns in the table.-
DataRow
Corresponds to a row in a table and can examine and update data in the
DataTable
. TheDataTable
exposesDataRow
objects through theDataRowCollection
object it contains. TheDataRow
caches changes made to data contained in its columns, storing both original and current values. This allows changes to be cancelled or to be later reconciled with the data source.-
Constraint
Allows constraints to be placed on data stored within a
DataTable
. Unique and foreign key constraints can be created to maintain data integrity.-
DataRelation
Provides a way to indicate a relationship between different
DataTable
objects within aDataSet
. TheDataRelation
relates columns in the parent and child tables allowing navigation between the parent and child tables and referential integrity to be enforced through cascading updates and deletes.-
DataView
Allows data, once retrieved into a
DataSet
orDataTable
, to be viewed in different ways. It allows data to be sorted based on column values and for a subset of the data to be filtered so that only rows matching specified criteria are displayed.
Chapter 2 examines .NET data providers in more detail and describes the way in which they provide connected functionality and serve as a bridge to disconnected functionality.
Get ADO.NET in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.