Delphi FireDac 中的 FDQuery、FDMemtable 和 ClientDataset 之间应该使用什么?

时间:2021-02-09 14:41:31

标签: delphi firedac

Delphi 新手。我正在开发一个需要访问 MSSQL 数据库的应用程序,为此我使用了 FDConnection、FDQuery 和连接到网格的 DataSource 组件。有了这些,我可以很好地访问/修改/删除数据。现在,如果我想过滤网格,我可以通过在运行时更改 FDQuery 组件来实现,但我不确定这是否是正确的方法。

我考虑过使用像 ClientDatasets 这样的将表存储在内存中的东西,因为我不确定 FDQuery 是否这样做,这样我就可以管理我已经检索到的数据,而无需过多地访问数据库。我的问题是我对这些组件中的任何一个都没有基本的了解,所以我的问题是:

我需要使用 FDQuery 以外的任何东西吗?

关于我正在构建的内容的更多上下文:UniGUI Web 应用程序,MSSQL 服务器与 Web 服务器位于同一局域网中,以及对 DB 的多用户访问。

1 个答案:

答案 0 :(得分:1)

现在我更好地理解了这些组件,我发现这个 FAQ from Embarcadero's doc 解释了我想知道的内容。

<块引用>

问题 1:我可以使用 TFDQuery 并将其连接到数据集提供程序并检索 Embarcadero 客户端数据集中的数据吗?

A:TFDQuery 是 TFDMemTable、TFDTableAdapter 和几个的混合 TFDCommand 的。所以,TFDQuery 里面有执行 SQL 的所有东西 命令、发送参数数据、接收和存储结果集、浏览 结果集并将更改发布回数据库。没有理由 使用 TFDQuery + DSP + CDS。

你可以直接使用TFDMemTable、TFDTableAdapter和TFDCommand, 而不是 TFDQuery。它们提供了更多的灵活性,但也需要更多 编码。以跨数据集的同步缓存更新为例。

换句话说,TFDQuery 是日常数据的最佳“捷径” 应用程序编程。