【问题标题】:What should I use between FDQuery, FDMemtable, and ClientDataset in Delphi FireDac?我应该在 Delphi FireDac 中的 FDQuery、FDMemtable 和 ClientDataset 之间使用什么?
【发布时间】:2021-02-09 14:41:31
【问题描述】:

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

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

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

关于我正在构建的内容的更多背景信息:UniGUI Web 应用程序,MSSQL 服务器与 Web 服务器在同一个 LAN 中,并且多用户访问 DB。

【问题讨论】:

  • 内存表未连接到服务器。您手动填充它。
  • 我已经投票决定关闭这个 q,因为它是关于 SO 的题外话,因为它确实要求提供有关使用 FIreDAC 和不相关的 TClientDataSet 进行数据库访问的教程。 TFDQuery 和 TFDTable 在 Delphi 的原始版本中基本上是并行的 TQuery 和 TTable - 那里有很多论文和教程解释了它们之间的差异,请尝试谷歌搜索。 TFDMemTable 和 TClientDataSets 基本上是内存中的数据集,再次谷歌解释它们的用途。 TClientDataset 最初设计为与 TDatasetProvider 一起使用 [cont]
  • ... 实现一种使用 SQL 数据库的方法(早于 FireDAC),该方法不需要服务器提供实时、可更新的结果集,并且可以与“firehose”一起使用光标。这些主题过于广泛,无法在一次问答中解决,这就是为什么你的 q 应该被关闭的原因。
  • 我推荐这本书:Delphi/Kylix Dtabase Development (Eric Harmon)。这样您将更好地了解如何使用 ClientDataSet。您的问题有点离题,您需要教程。

标签: delphi firedac


【解决方案1】:

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

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

答:TFDQuery 是 TFDMemTable、TFDTableAdapter 和几个 TFDCommand 的。因此,TFDQuery 拥有执行 SQL 的所有功能 命令、发送参数数据、接收和存储结果集、浏览 结果集并将更改发布回数据库。没有理由 使用 TFDQuery + DSP + CDS。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多