Beh, premesso che anche io sono agli inizi con ASP.NET, ti posso dire che per adesso invece di utilizzare dei dataSet ho usato dei DataReader (che si avvicinano di + ai recordset) per fare delle query. Per es:

//Creo la connessione
string strConn = ctlConnectStrings.JetConnectionString;
OleDbConnection Conn = new OleDbConnection(strConn);
Conn.Open();

//Creo il primo comando e lo bindo
string sqlString="SELECT * FROM Tipo_app ORDER BY tipo_descri";
OleDbCommand cmd = new OleDbCommand(sqlString, Conn);
OleDbDataReader RS;
RS=cmd.ExecuteReader();
while(RS.Read())
{
tipArr.Add(RS["tipo_descri"]);
}
tipo.DataSource = tipArr;

RS.Close();

Il metodo .Read() funziona sia da Eof che da moveNext in quanto restituisce true se sono presenti + righe e false nel caso contrario.
Per eseguire dei comandi che non restituiscon risultati tipo UPDATE DELETE ecc. :

sqlString="DELETE * FROM Appuntamenti WHERE app_id="+key;
cmd = new OleDbCommand(sqlString, Conn);
cmd.ExecuteNonQuery();

Spero di esserti stato di aiuto.