ClientDataSet到数据库表

时间:2015-07-24 10:46:29

标签: delphi delphi-xe2 tclientdataset

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

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

ClientDataSet连接到cxgrid,后者显示所有字段。所有带有数据的字段我都想尝试复制到表格中。

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

任何帮助都会很棒

1 个答案:

答案 0 :(得分:1)

TClientDataSet是内存数据集,可以单独工作(正如您所做)或与数据库会话协作。为了发送数据集的所有内容(所有记录),您需要使用属性TDatasetProvider将其连接到TClientDataSet.ProviderName组件。

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

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

DataModule需要一个数据集,它将从CDS接收所有待处理的行。 TDatasetProvider还会产生一些事件,可用于对更新进行更精细的控制(我的偏好)。

当CDS的记录已更改且需要保留时,您调用生成增量数据包的TDatasetProvider方法(所有已插入,删除或修改的记录)并将其发送给提供者,提供者将处理它以保留每个记录。

如果在更新期间没有发生错误,则提供程序会向CDS发送另一个版本的delta,并且它将与CDS的当前内容进行协调。因此,行的挂起状态将被清除以进行另一轮操作。

所以,总结一下:

  1. 添加TClientDataset.UppyUpdates并将CDS连接到
  2. 添加另一个数据集(可以使用数据服务器的数据集)并将提供程序连接到它
  3. 如果要将CDS增量发送给提供商,请致电TDatasetProvider
  4. 详细了解cds.ApplyUpdates(0)TClientDataset和德尔福的datasnap。