ADOTable和ClientDataSet之间的区别是什么? 这两个组件都能够执行批量更新,为什么要增加额外的组件,例如ClientDataSet和DataSetProvider。
答案 0 :(得分:3)
主要区别在于ClientDataSet无需连接外部数据库即可运行。您可以将其用作内存表或从文件加载它的内容。 与DataSetProvider结合使用时,它经常用于克服单向数据集的限制和缓存。
答案 1 :(得分:3)
ClientDataSet是一个内存数据集,它具有许多有用的附加功能。 与Interbase / Firebird表和查询相比,一个很大的优点是,您不需要保持事务处于活动状态,例如:只要您在网格中显示数据。
答案 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,例如,您基本上可以独立完成。