My take on this subject is that WebForms favors one way while WinForms favors another. Although I'll make the disclaimer that I do not work with WinForms regularly and my opinions are based on what I have read in articles and in questions on this board.
When I'm in WebForms, most of the time I make database update calls with Command.ExecuteNonQuery(). This seems most logical to me because WebForms is working with stateless data. Depending on the scope of my data retreival code (is it in the webform code-behind or a data access layer) I will use either the DataAdapter/DataSet or Command/DataReader. Seeing as most of the time in webforms you are making one-off data hits to the database it makes more sense to use small clean queries with the ExecuteNonQuery method instead of setting up all the objects for a dataset Add/Delete/Update.
On the flip side, when working with a WinForms application your data is stateful because the program is 'living' in memory (versus the statelessness single-page execution of webforms). In this scenario it would seem to make more sense to work with your data in a disconnected (but stateful) nature and use the Add/Update/Delete functionality that you can take advantage of in a stateful application.
I doubt that either method you describe is any better or more professional than the other. However, as most techniques in programming go, one has a more suitable use than the other depending on the scenario, and what's more professional is knowing which one to use.
-
Peter