关于在ado 执行批量更新的问题(事务处理〕(100分)

  • 主题发起人 poorness
  • 开始时间
P

poorness

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用adoquery 做以个主从档
从档我用把adoquery的locktype=ltBatchOptimistic
主档和从档的保存写在同一个事件了,我在保存事件里
adoconnection.begintran
执行主档保存动作
执行从档保存动作
成功
adoconnection.commit
在该事件中没有回滚事务,而是把事务回滚放到取消事件中
但是这样有时会造成事务死守,因为有是会出现错误,然后用户在修改正确,甚志不该,
那事务就一直挂者,不是就死了吗
如果不挂事物,那又会把正确那个(主档或从档〕的资料保存到后资料库
请大虾多多指点!



 
我的習慣做法:
try
adoconnection.begintran
执行主档保存动作
执行从档保存动作
adoconnection.commit
except
...
adoconnection.RollbackTrans
end;
 
利用AdoConnection的InTransaction属性,如果处于事务状态,值为True,else 为 false
在你的取消按钮中可以:
if AdoConnection1.InTransaction then
AdoConnection1.RollbackTrans;
 
要看你用什么数据库[?]
 
如果使用缓存机制,最好先调用一次UpateBatch()方法然后再调用Transaction命令
 

Similar threads

S
回复
0
查看
660
SUNSTONE的Delphi笔记
S
S
回复
0
查看
648
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部