Datatable против Dataset

голоса
104

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

Тем не менее, многие из примеров на веб-шоу с использованием набора данных, а и доступ к таблице (ы) с помощью метода коллекций.

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

Задан 05/08/2008 в 14:07
источник пользователем
На других языках...                            


7 ответов

голоса
6

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

Ответил 05/08/2008 в 14:10
источник пользователем

голоса
82

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

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

Ответил 05/08/2008 в 14:12
источник пользователем

голоса
5

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

Ответил 05/08/2008 в 14:15
источник пользователем

голоса
3

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

Ответил 14/09/2008 в 03:55
источник пользователем

голоса
19

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

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

Ответил 14/09/2008 в 04:07
источник пользователем

голоса
0

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

Ответил 05/12/2016 в 15:50
источник пользователем

голоса
0

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

Ответил 30/08/2019 в 03:45
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more