В чем разница между ADOTable и ClientDataSet - PullRequest
4 голосов
/ 06 декабря 2011

В чем разница между ADOTable и ClientDataSet ?
Оба компонента способны выполнять пакетное обновление, поэтому добавьте дополнительные накладные расходы, имея 2 дополнительных компонента, таких как ClientDataSet и DataSetProvider .

Ответы [ 4 ]

3 голосов
/ 06 декабря 2011

Клиентский набор данных - это общая реализация, которая работает независимо от базовой библиотеки доступа к БД. Он может работать (через провайдера) с любым потомком TCustomDataset, будь то набор данных dbExpress, BDE, ADO или любая из множества библиотек, доступных для Delphi, чтобы обеспечить прямой доступ к базе данных с помощью собственного клиента (то есть ODAC, Прямой доступ к Oracle, ecc. Ecc.)

Он также может работать в многоуровневом режиме, когда набор данных и поставщик доступа к данным находятся в приложении удаленного сервера, а TClientDataset находится в клиентском приложении, что позволяет развертывание «тонкого клиента», которое не требует клиентов базы данных или библиотека доступа к данным, например ADO, установленная на клиенте (требуемый код midas.dll может быть связан с приложением при использовании последних версий Delphi, в любом случае требуется только midas.dll).

Кроме того, его можно использовать как таблицу в памяти, в которой можно хранить данные в локальном файле. Он также допускает модель «портфель», в которой тонкий клиент все еще может работать, когда он не подключен к базе данных, а затем «синхронизировать», когда соединение становится доступным. Это было более полезно в прошлом, когда беспроводной доступ не был распространен.

Как видите, TClientDataset предлагает намного больше TADODataset.

3 голосов
/ 06 декабря 2011

ClientDataSet - это набор данных в памяти, который имеет много полезных дополнительных функциональных возможностей. Одно большое преимущество по сравнению с таблицами и запросами Interbase / Firebird состоит в том, что вам не нужно поддерживать транзакцию, например до тех пор, пока вы отображаете данные в сетке.

Посмотрите на эту статью: ClientDataSet в каждом приложении базы данных

3 голосов
/ 06 декабря 2011

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

0 голосов
/ 06 декабря 2011

Самое важное различие, которое я могу придумать, - это разрешение конфликтов обновления.Фактически, TClientDataSet предоставляет удобный диалог ReconcileErrorForm, который завершает процесс показа пользователю старых и новых записей и позволяет им указать, какое действие предпринять, в то время как, например, с TADOTable вы в основном сами по себе.

...