Традиционный способ получения данных - использование классов в пространстве имен System.Data.SqlClient. Вы можете использовать DataReader, который является типом курсора только для чтения, быстрый и эффективный, когда вы просто хотите прочитать набор записей. DataReader является привязываемым, но вы читаете его по одной записи за раз и поэтому не можете, например, вернуться назад. Если набор записей очень большой, читатель также хорош, потому что он хранит только одну запись за раз в памяти.
Вы можете использовать DataAdapter и получить DataSet, а затем у вас будет полный контроль над всеми данными в классе DataSet. Это тяжелее в системе, но очень мощно, когда вам нужно работать с данными в вашем приложении. Вы также можете использовать DataSet, если запрос возвращает более одного набора записей.
Так что это действительно зависит от того, что вам нужно делать с данными после их получения из базы данных. Если вам просто нужно прочитать что-то другое, используйте DataReader, иначе DataSet.