Mit dem DataRader können Daten aus der Datenbank gelesen uns Updates und Inserts ausgeführt werden. Der DataReader gibt die selektierten Daten als data stream zurück.
Ein DataAdapter kann auch Daten in der Datenbank aktualisieren. Ein DataAdapter benötigt eine Verbindungsobjekt (OleDbConnection) und ein Befehlsobjekt (OleDbCommand). Weiterhin ist eine DataTable, eine virtuelle Tabelle von Nöten. Jeder DataAdapter, sei es OleDb, sei es SQLClient, füllt einen DataTable. Dadurch können Daten aus verschiedenen Datenbanksystem entnommen werden, sofern dieses notwendig ist.
Das DataTable-Objekt ist genau so aufgebaut wie eine realle Tabelle. Es gibt Felder (Columns) und Datensätze (Rows). Über diese beiden Eigenschaften kann auf die Daten des DataTable-Objektes zugegriffen werden. Der DataAdapter kann entweder einem DataTable-Objekt nur das Schema, bzw. die Stuktur oder die Daten inklusive Struktur einfügen.