ADO 在用BatchUpdata模式时,如果记录的主键重复,向数据库更新时出错,ADODATASET不能返回到UpdataBatch之前的状态,各位有没有解决

  • 主题发起人 主题发起人 newfat
  • 开始时间 开始时间
to wbtvc:
可这样也太慢了呀,要在客户端对 所有的记录进行遍历比较呀
 
to jianguo_bu:
我这段代码是放在保存按钮里的,而且我连接MSSQL7.0,Oracle8都有这个问题。
能把你的代码贴出来吗?
 
可以用存储过程呀
 
用SavePoint试试。
 
TO zxywang:
savepoint 是Oracle中的吧,我想在Delphi中用BatchUpdata真接实现,不要用到存储过程
 
我也被这个问题困扰着,没办法,现在只好先用存储过程自己Check error先,
然后再updatebatch,
不知道哪位高手知道如何回到updatebatch之前的状态,望请告知,谢!
 
delphi补丁打得不彻底,ado的BatchUpdata可能会有问题,可在客户端使用内存缓冲表,
然后使用循环批存储
 
delphi 6 的ADO应该不用打补丁。
 
newfat, thank you so much.
你回答了我的一个问题。
你说??处不用写什么
我试了试还真的是那么回事。
我困在那里两天了。其它人都说 xxxToXXX
只有你是对的。说明了你的扎实的基础。佩服佩服。交个朋友好吗? QQ19273210

 
这种情况应该用事务处理,失败后回滚!
 
不在ADO中事务处理;用Oracle中的;
(没条件,没用过Oracle,听说Oracle会自动处理,听说而已:(
 
其实引起回不到原来状态的不只是“主键重复”才会引起,
还有其他一些错误也会引起。
我查了ADO的所有(能拿得到的)资料,都找不到回到原来状态的办法,
这绝不是什么补丁能解决的,这是ADO的机制引起的。
我现在解决的办法,还是在UpdateBatch前先检查可能的错误,
然后再UpdateBatch,这样就保证万无一失。速度方面嘛,还行,可以用存储过程辅助。
 
后退
顶部