? A DataSet can represent an entire relational database in
memory, complete with tables, relations, and views.
? A DataSet is designed to work without any continuing
connection to the original data source.
? Data in a DataSet is bulk-loaded, rather than being
loaded on demand.
? There's no concept of cursor types in a DataSet.
? DataSets have no current record pointer You can use For
Each loops to move through the data.
? You can store many edits in a DataSet, and write them to
the original data source in a single operation.
? Though the DataSet is universal, other objects in
ADO.NET come in different versions for different data
With Recordset comes the Recordset pointer, that points to
the relative data so retrieved from the database. The
Recordset object has MoveNext, MoveFirst, MovePrevious and
MoveLast methods that provides a means for Data Traversal
With DataSet there is no pointer that points to the record,
while a Bulk of Data is retrieved from the Database to the
Computer's Memory, and the record is accessed via the index
of the Record so retrieved.
With Recordset, has types of Cursors ie. Open Cursor and
Data Manipulation Cursor, which enables the cursor to be
open as read-only or dynamic (meaning for data
With Dataset as bulk of data is loaded to the Memory, only
Viewing operation is possible.
With Recordset, if the cursor is open as OpenDynamic and
OpenOptimistic, the Data manipulated by 1 user, its effect
is visible to the other user, leading to clear picture of
the Database, while this is not the case in DataSet.
DataSet can be viewed as a ONE WAY HIGHWAY, where the data
comes from Database to the Computer's Memory.
RecordSet can be viewed as a TWO WAY HIGHWAY, based on and
according to the Cursor type selected in the recordset
The Recordset was not XML-based and could not be serialized
to XML easily or flexibly.
Finally, a Recordset was not independent of a data store
because it tracked a Connection object
and through its methods could send queries to the data
source to populate, update,
and refresh its data.
To that end, the Recordset contained functionality found in
the ADO.NET DataSet,
data reader, and data adapter objects.
Similar to the DataSet, a Recordset could be disconnected
from its data store
and therefore act as an in-memory cache of data.
Of course, it could also be used in a connected model
depending on the cursor options that were set.
Although the Recordset object stored multiple versions of
each column for each of its rows,
it was not by nature able to represent multiple tables
without the use of the Data Shape Provider.