There is no good or bad way to retrieve the data from a database, it all depends upon user case and scenario.
There are multiple ways to retrieve data, we could be used based on a requirement
1) Ado.Net Data Adapter
2) Ado.Net Data Reader
3) Linq to SQL
4) Entity Framework
a) Linq Syntax
b) Extension Method
1) Ado.Net Data Adapter
DataAdapter will act as a Bridge between DataSet and database. This DataAdapter object is used to read the data from a database and bind that data to a dataset. DataAdapter is a disconnected oriented architecture
So if you want to get the data in a disconnected way means once data adapter executes it will fill the dataset with the data and get disconnected from a database, so data will be present in UI /Application.
2) Ado.net Data Reader
DataReader is used to read the data from a database and it is a read and forward only connection-oriented architecture during fetch the data from database
It read one data/row at a time so could be fast ut to read multiple rows it will read one by one so may take overall equal/more time than data adapter but very fast to retrieve the first row as compared to the data adapter
3) Entity Framework
It is an ORM model to fetch the data from database.which provide the high level of abstraction, it is the layer above Ado.net so if we talk about performance it will be little slow than Ado.net but highly used for fetching data if we have simple CRUD operation.
You could google for the above topics to read more details , few article below