Nextrp [CPP] RU + Many GEOs Игра на карте России | NEXTRP

Datatable против Dataset

c# dataset datatable

106856 просмотра

7 ответа

36372 Репутация автора

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

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

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

Автор: GateKiller Источник Размещён: 05.08.2008 01:07

Ответы (7)


6 плюса

17917 Репутация автора

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

Автор: Karl Seguin Размещён: 05.08.2008 01:10

87 плюса

26713 Репутация автора

Решение

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

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

Автор: ZombieSheep Размещён: 05.08.2008 01:12

6 плюса

11815 Репутация автора

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

Автор: Shawn Размещён: 05.08.2008 01:15

3 плюса

3665 Репутация автора

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

Автор: tbreffni Размещён: 14.09.2008 02:55

21 плюса

1512 Репутация автора

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

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

Автор: Joshua Hudson Размещён: 14.09.2008 03:07

0 плюса

2351 Репутация автора

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

Автор: mickeyf Размещён: 05.12.2016 03:50

0 плюса

21 Репутация автора

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

Автор: Nischal Tyagi Размещён: 30.08.2019 12:45
32x32