关于事务中的TRY(20)

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
while (not GetSuccessful) and (TryCount<3) do begin ADOConnection1.BeginTrans; try// 请问try放在交易开始之前和之后有什么区别没有? 数据库操作 ADOConnection1.CommitTrans; GetSuccessful := True; except ADOConnection1.RollBackTrans; inc(TryCount); end;
 
差别是对 ADOConnection1.BeginTrans; 这一句进行了保护。try写在开始事务之后比较稳妥,因为你需要try的是数据库操作
 
建议写成try ADOConnection1.BeginTrans; ...; ADOConnection1.CommitTrans; GetSuccessful := True;except ADOConnection1.RollBackTrans;end;
 
两位都是高积分的专家,却给出了相反的回答,那就继续等其它高手来指点一二。
 
try ADOConnection1.BeginTrans; ...; ADOConnection1.CommitTrans; GetSuccessful := True;except GetSuccessful := False; try ADOConnection1.RollBackTrans; except end;end;
 
因为ADOConnection1.BeginTrans;也是有可能失败的,需要一起保护一下
 
那么BeginTrans一起保护起来的话,一旦BeginTrans出错,就要执行RollBackTrans,不是没有对应的BeginTrans了吗?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
618
import
I
后退
顶部