In generale un dataset si interfaccia con il database sotto tramite un dataAdapter tipizzato secondo il tipo di database ( SqlServer, Oracle, etc..)
Questo oggetto si occupa di gestire i metodi per le operazioni crud, ed eventuali query particolari definite dal programmatore. Quello che viene caricato nel dataset dipende quindi da questo oggetto adapter. Il dataset quindi è sempr ein modalità disconnessa.

Ti faccio un esempio più pratico.
Il dataset di solito è il datasource di una griglia. Quando tu vai a modificare dei valori dentro la griglia, modifichi anche quelli del dataset. A questo punto le righe modificate del dataset assumono uno stato particolare ( Added, Modifed, Deleted, se non ricordo male) a seconda di quello che hai fatto.

A questo punto il dataset contiene dei dati differenti da quelli del DB. Tramite l'adapter esegui allora un'operazione di salvataggio del dataset per aggiornare i dati anche nel DB.


La stessa cosa avviene al contrario.
I dati sul DB cambiano in maniera indipendente dalla tua applicazione.
Sul dataset sono presenti i dati caricati la prima volta, ma non verranno poi aggiornati ad ogni cambiamento del db. E' necessario quindi fare una richiesta periodica di aggiornamento sempre tramite l'adapter.

Spero che sia quello che tu stessi cercando.

P.S. Se non si usa l'adapter, il riempimento del dataset deve essere fatto a mano. Di conseguenza la connessione con il DB la gestisci te come meglio credi.