Datatable против Dataset

В настоящее время я использую DataTable для получения результатов из базы данных, которую я могу использовать в своем коде.

Однако многие примеры в Интернете показывают использование вместо этого DataSet и доступ к таблицам через метод коллекций.

Есть ли какое-либо преимущество с точки зрения производительности или иного использования DataSets или DataTables в качестве метода хранения результатов SQL?

5.08.2008 13:07:40
Если вы работаете с веб-приложениями, вы можете использовать DataReader: aspnet.4guysfromrolla.com/articles/050405-1.aspx aspnet.4guysfromrolla.com/articles/051805-1.aspx devx.com/vb2themax/ Статья / 19887/1954? Pf = true
Chris Burgess 15.09.2008 13:38:09
7 ОТВЕТОВ
РЕШЕНИЕ

Это действительно зависит от вида данных, которые вы возвращаете. Поскольку DataSet - это (фактически) просто набор объектов DataTable, вы можете возвращать несколько отдельных наборов данных в один и, следовательно, более управляемый объект.

С точки зрения производительности вы, скорее всего, получите неэффективность от неоптимизированных запросов, чем от «неправильного» выбора конструкции .NET. По крайней мере, это был мой опыт.

90
30.04.2015 10:31:05

в 1.x были вещи, которые DataTables не могли делать, какие DataSets могли (не помню точно, что). Все, что было изменено в 2.x. Я думаю, поэтому многие примеры все еще используют DataSets. DataTables должны быть быстрее, так как они более легкие. Если вы используете только один набор результатов, ваш лучший выбор между ними.

7
5.08.2008 13:10:26
AFAIK один большой момент заключался в том, что DataTable не может быть сериализован и не может быть возвращен в результате WebService.
Martin Clarke 5.07.2009 00:17:55

Одна из особенностей DataSet состоит в том, что если вы можете вызывать несколько операторов select в ваших хранимых процедурах, DataSet будет иметь одну DataTable для каждой.

6
5.08.2008 13:15:53
Вы также можете запустить несколько SQL запросов на выборку в одном SQLCommand и доступ к каждому результирующем в dataset.Tables [я]
Jan 8.12.2017 10:31:31

Есть некоторые оптимизации, которые вы можете использовать при заполнении DataTable, такие как вызов BeginLoadData (), вставка данных, затем вызов EndLoadData (). Это отключает некоторое внутреннее поведение в DataTable, такое как ведение индекса и т. Д. См. Эту статью для получения дополнительной информации.

3
14.09.2008 02:55:38

Одно из основных отличий состоит в том, что DataSets может содержать несколько таблиц, и вы можете определять отношения между этими таблицами.

Если вы возвращаете только один набор результатов, хотя я думаю, что DataTable будет более оптимизированным. Я бы подумал, что должны быть некоторые накладные расходы (предоставленные небольшими), чтобы предложить функциональность, которую выполняет DataSet, и отслеживать несколько DataTables.

26
8.12.2016 00:19:14

В любом случае, когда вы имеете дело только с одной таблицей, самое большое практическое различие, которое я обнаружил, состоит в том, что DataSet имеет метод «HasChanges», а DataTable - нет. Однако оба имеют «GetChanges», так что вы можете использовать его и проверить на ноль.

1
5.12.2016 15:50:19

Объект DataTable представляет табличные данные в виде табличного кэша строк, столбцов и ограничений в памяти. DataSet состоит из набора объектов DataTable, которые можно связать друг с другом с помощью объектов DataRelation.

0
30.08.2019 00:45:27