关于clientdataset中data与delta中数据的合并!

china_ttw 2005-08-19 03:37:42
现正在做一个三层结构的数据库系统!
在该结构中,数据的更新是通过把delta数据传递到中间层的接口来实现的(并未通过DataProvider)
这样做的一个好处是方便客户端对数据库事务进行控制!如客户端需要同时将五个数据集的数据更新到数据库,且该更新必须在一个事务内完成,在这种情况下,如果通过DataProvider方式进行更新,很难达到目的!

事务控制的问题是解决了,但新的问题又出现了!
在数据库表的ID字段中,一般都是采用自增字段,
而数据在插入后,生成的自增字段必须通过delta返回到客户端
并与data数据进行合并
以便客户端反应出最近的数据,
且在合并的时候需要准确对应数据记录,比如我一次性插入了十条记录,也通过delta返回了十个ID,怎么才能将这十个ID准确的合并到这十条记录中呢?

如果不进行合并,则会出现在数据集中新增了数据,并成功保存后,该新增的数据无法进行删除,因为该数据ID未回到客户端,客户端不知道怎么去删除该数据!

现求解决此问题的最好办法?
我现在的初步想法是在clientdataset中新增一个自增字段列,我们暂且叫它顺序列,该列数据并不保存到数据库中,只是作为更新记录的先后顺序,在更新时,将该字段包含在delta中一并传递到中间层,数据库更新完成后,该顺序列就对应了数据插入过程中的自增字段值,当该delta返回到客户端时,再根据该顺序字列去更新data中的数据,这样虽然能够达到要求,但操作难度比较大,望高手能够指点一二!
...全文
281 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlingaaa 2005-08-20
  • 打赏
  • 举报
回复
接一点
hqhhh 2005-08-20
  • 打赏
  • 举报
回复
来迟了,
只有接分了
china_ttw 2005-08-20
  • 打赏
  • 举报
回复
已解决:通过 DataSet.Reconcile(o);

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧