TDBCtrlGrid 是通用数据感知组件吗?

Is TDBCtrlGrid a generic data aware component?

我正计划离开 BDE 和 dBase,因此,在实施某些应用程序时,我需要远离一切可能使过渡更加困难的事情。例如,我想知道像 TDBCtrlGrid 这样的数据感知组件是否在某种程度上与 BDE 相关联。

简短的回答是否定的:TDBCtrlGrid 与 BDE 无关。

TDBCtrlGrid 由 "dataset" 填充,或者,如果您愿意,由 TDataSet 填充,后者是提供基本属性、事件和方法的抽象 class用于处理数据。

有许多 TDataSet 的实现,可以让您使用任何您想要的数据库引擎。

这里的文档是一些流行的 TDataSet 实现:

  • TCustomADODataSet is the base class for datasets that access their data using ActiveX Data Objects (ADO). TCustomADODataSet descendants include TADODataSet, TADOTable, TADOQuery, and TADOStoredProc. Developers who create custom dataset components that use ADO derive them from CustomADODataSet.

  • TIBCustomDataSet is the base class for datasets that directly access the data in InterBase tables. TIBCustomDataSet descendants include TIBDataSet, TIBTable, TIBQuery, and TIBStoredProc. Developers who create custom dataset components that directly access data in an InterBase database derive from TIBCustomDataSet.

  • TCustomSQLDataSet is the base class for unidirectional datasets. Unidirectional datasets are read-only datasets that permit only forward navigation. TCustomSQLDataSet descendants include the dbExpress datasets TSQLDataSet, TSQLQuery, TSQLTable, and

  • TSQLStoredProc. Developers who create custom dataset components that use dbExpress to access their data derive from TCustomSQLDataSet.

  • TCustomClientDataSet is the base class for in-memory datasets. Client datasets can work with data from files on disk or with data provided by another component via a provider. They cache that data in memory, maintain a record of any changes in a change log, and apply cached updates at a later point back to the source of the data. Developers who create custom datasets that store their data in an in-memory cache derive from TCustomClientDataSet.

Db-aware 组件,如 TDBCtrlGrid、TDBGrid、TDBEdit 等,都应该与比 TQuery、TTable 等更现代的 TDataSet 后代一起工作。所以你的问题的答案是它们都是通用的。

Delphi 的 db-aware 组件设计的重点是它们使用的访问模型是从任何特定数据集实现中抽象出来的,因此可以与任何 TDataSet 后代一起工作,因为 TDataSet 本身实现了一个抽象的数据访问模型。

Delphi 的 db-aware 组件在从 TDataSet 中移除的两个步骤中工作,并通过 TDataSource 和 TDataLink 及其后代与其(或其任何后代)交互。所有数据交互都通过 TDataLinks 发生 - 请参阅 DB.Pas.

中的源代码

我会调查几个数据库,包括您当前使用的 Delphi 版本中的一些最新版本。这包括 Mongo 如果你有最新的。

对于生产力来说,Firedac 相当不错。它像 ADO 一样编码,性能几乎和 GO 一样好。

总的来说,我建议阅读 Nick Hodges 的书并开始使用 Spring4D。

如果这对您来说太深了,那么 Firedac 是一个很好的起点。