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

What should I use between FDQuery, FDMemtable, and ClientDataset in Delphi FireDac?

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

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

除了 FDQuery,我还需要使用其他任何东西吗?

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

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

Q1: Can I use TFDQuery and connect it to a dataset provider and retrieve the data in an Embarcadero client dataset?

A: TFDQuery is a mix of TFDMemTable, TFDTableAdapter and several TFDCommand's. So, TFDQuery has everything inside to execute SQL commands, send parameter data, receive and store result sets, browse result sets and post changes back to a database. There is no reason to use TFDQuery + DSP + CDS.

You can use TFDMemTable, TFDTableAdapter and TFDCommand directly, instead of TFDQuery. They give more flexibility, but also require more coding. Take for example synchronized cached updates across datasets.

In other words, TFDQuery is an optimal "shortcut" for every day data application programming.