ADOTable和ClientDataSet有什么区别

时间:2011-12-06 08:58:23

标签: delphi ado

ADOTableClientDataSet之间的区别是什么? 这两个组件都能够执行批量更新,为什么要增加额外的组件,例如ClientDataSetDataSetProvider

4 个答案:

答案 0 :(得分:3)

主要区别在于ClientDataSet无需连接外部数据库即可运行。您可以将其用作内存表或从文件加载它的内容。 与DataSetProvider结合使用时,它经常用于克服单向数据集的限制和缓存。

答案 1 :(得分:3)

ClientDataSet是一个内存数据集,它具有许多有用的附加功能。 与Interbase / Firebird表和查询相比,一个很大的优点是,您不需要保持事务处于活动状态,例如:只要您在网格中显示数据。

看看这篇文章: A ClientDataSet in Every Database Application

答案 2 :(得分:3)

客户端数据集是一种通用实现,无论底层数据库访问库如何都可以使用。它可以(通过提供程序)与任何TCustomDataset后代一起工作,无论是dbExpress数据集,BDE,ADO,还是Delphi中可用于允许使用本机客户端直接访问数据库的任何库(即ODAC,直接Oracle Access,ecc.ecc。)

它也可以在多层模式下工作,其中数据访问数据集和提供程序位于远程服务器应用程序中,TClientDataset位于客户端应用程序中,允许“瘦客户端”部署,不需要数据库客户端或安装在客户端上的数据访问库(如ADO)(使用最新版本的Delphi时,所需的midas.dll代码可以链接到应用程序,无论如何只需要midas.dll)。

最重要的是,它可以用作能够将数据存储在本地文件中的内存表。它还允许“公文包”模型,瘦客户端在未连接到数据库时仍然可以工作,然后在连接可用时“同步”。当无线接入不常见时,这在过去更有用。

正如您所看到的,TClientDataset提供了更多的TADODataset。

答案 3 :(得分:0)

我能想到的最重要的区别是解决更新冲突。实际上,TClientDataSet公开了方便的ReconcileErrorForm对话框,该对话框包含向用户显示旧记录和新记录的过程,并允许它们指定要采取的操作,而使用TADOTable,例如,您基本上可以独立完成。