为什么一条记录会重复上传2条完全相同的记录?(100)

  • 主题发起人 主题发起人 友美子
  • 开始时间 开始时间

友美子

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么一条记录会重复上传2条完全相同的记录?delphi7三层数据库上传是客户端上传远程服务器sql2000上传后,我已经 ClientDataSet1.ApplyUpdates(-1); ClientDataSet1.EmptyDataSet;//清除ClientDataSet中的数据===================================不知道以上重复数据是如何删除的?你们是如何处理的。我目前的处理是,上传后,下载-检查是否有2记录除服务器ID以外,其它数据如果完全相同,就删除一条。但是,我感觉这样处理的后续代码比较麻烦,可能有隐患。另外,我考虑,是否可以在服务器端检查,如果有重复,不上传,但是,我考虑服务器是否会因为检查繁多,带来错误。
 
重复相同记录说明程序有问题,好好检查一下吧。在服务器端用Sql Monitor看看。建议用ApplyUpdates(0);大多数情况下不需要EmptyDataSet。
 
重复相同记录说明程序有问题,====是客户端的程序还是服务器的程序?
 
数据库在相关字段上增加唯一索引可否?====我也不知道,我也这样考虑过,但是害怕在服务器的程序或在sql2000会产生错误,影响后续记录的上传,而这种错误,我暂时不知道在那里处理或兼容。如果在服务器程序里面事先检查的话,我害怕delphi对此的健壮性
 
ApplyUpdates(0);的话,我后面的记录是无法上传的。--------------------------大多数情况下不需要EmptyDataSet。 ====但是,我以前是经常遇到那样的问题,如果不EmptyDataSet的话,重复数据更多了
 
ClientDataSet1.ApplyUpdates(0); //提交数据到后台(其实就是把ClientDataSet1日志发送给后台) ClientDataSet1.MergeChangeLog; //清除ClientDataSet1日志(即ClientDataSet1.Delta)按理说,一般数据表都需要设置主键,这样可以防止数据重复,或者说,可以防止由于客户端程序的设计错误而导致出现错误的数据。尽量使用数据库的功能来保证数据的完整性,这比通过程序来保证数据的完整性更简单、更安全。
 
楼上说的没错~~
 
ApplyUpdates(0)后,检查一下ChangeCount是否为0。ApplyUpdates(0)成功后,是会自动MergeChangeLog的。楼上说的主键的问题很关键,如果不设置主键,就要保证多个字段组合后是唯一的。否则以后问题会更多。
 
ApplyUpdates(0)成功后,是会自动MergeChangeLog的。=========?如果不成功,那么客户端或服务器程序会有错误提示,停止运行吗?还是什么也不提示,就是全部数据无法上传。如果,我设置了主键,我尽量把它做成是唯一的,但是,如果主键出现不唯一,那么上传会怎么样?错误?提示?终止?忽略?
 
ok 我测试了 大体知道了 非常感谢!
 
后退
顶部