ClientDataSet 到数据库 Table

ClientDataSet to Database Table

我有一个包含多个字段的 ClientDataSet。

我的问题是,有谁知道将字段从 ClientDataSet 复制到数据库的方法 table?

ClientDataSet 连接到一个显示所有字段的 cxgrid。我想尝试将所有包含数据的字段复制到 table.

还要指出...ClientDataSet 正在从 XML 文件中读取字段和数据。

任何帮助都会很棒

TClientDataSet 是内存中的数据集,它可以单独工作(就像你正在做的那样)或与数据库会话合作。为了发送数据集的所有内容(所有记录),您需要使用 属性 TClientDataSet.ProviderName.

将其连接到 TDatasetProvider 组件

由于TClientDataSet(CDS)最初设计为以断开连接的方式工作,为了支持多层应用程序,CDS与其提供者之间的连接不是通过引用,因为它是TDataSource 引用数据集。 ProviderName 属性 是一个显示提供商名称的字符串。

另一种方法是分配 属性 TClientDataSet.Provider 如果它们都在同一个 DataModule 中,但这将通过代码而不是 ObjectInspector 发生。

TDatasetProvider 需要一个数据集来接收来自 CDS 的所有待定行。 TDatasetProvider 还会生成一些事件,可用于对更新进行更细粒度的控制(我的偏好)。

当 CDS 有记录被更改并需要保留时,您调用 TClientDataset.UppyUpdates 方法,该方法会生成一个 delta 数据包(所有被更改的记录插入、删除或修改)并将其发送给提供商,提供商将对其进行处理以保留每条记录。

如果更新过程中没有发生错误,提供商将向 CDS 发送另一个版本的增量,并将与 CDS 的当前内容进行核对。结果,行的挂起状态被清除以进行另一轮操作。

所以,总结一下:

  1. 添加 TDatasetProvider 并将您的 CDS 连接到它
  2. 添加另一个数据集(可以与您的数据服务器一起使用的数据集)并将提供者连接到它
  3. 当您想将 CDS 增量发送给提供者时调用 cds.ApplyUpdates(0)
  4. 详细了解 TClientDatasetTDatasetProvider 和 Delphi 中的数据快照。