ADO事务处理会失败吗?(50分)

  • 主题发起人 主题发起人 少爷的拐杖
  • 开始时间 开始时间

少爷的拐杖

Unregistered / Unconfirmed
GUEST, unregistred user!
今日看旧贴,看到如下内容.
类似这样的语句事务将无法正确回滚
........
try
ADOCommand1.CommandText:='.........'; //执行1
ADOCommand1.Execute;
ADOCommand1.CommandText:='.........'; //执行2
ADOCommand1.Execute;
ADOCommand1.CommandText:='.........'; //执行3
ADOCommand1.Execute;
ADOConn.CommitTrans;
except
on E:Exception do
begin
ADOConn.RollbackTrans;
end;
end;
如果中间出错了一个,只有出错的回回滚,其他的被提交了,真这样么?
那岂不没有事务的意义了.
希望有经验的大侠能给个说法.
参照旧贴id:524043
旧贴标题: 大虾帮忙:用ADO进行事务处理出现的问题 (50分)
 
如果出错的话,所有的都回滚。
 
自然是出错一个,全部回滚。
 
出错一个,全部回滚。
 
try
except
end
try
except
end
。。。
 
有没有人看过id524043的帖子?
 
我刚看了,不过那个贴子的说法我没试过的.
//关注此题.欢迎讨论.
 
你的语句如果一条出现错误,将全部回滚,因为你的ADOCommand1.CommandText永远仅有一条
待执行待执行语句
 
你没有BeginTrans这条语句
不管程式在执行execute过程中有没有出错
你到了CommitTrans就一定会出错
所以在Try的后面加一句
ADOConn.BeginTrans
后面再是
ADOCommand1.CommandText:='.........'; //执行1
ADOCommand1.Execute;
ADOCommand1.CommandText:='.........'; //执行2
ADOCommand1.Execute;
ADOCommand1.CommandText:='.........'; //执行3
ADOCommand1.Execute;
ADOConn.CommitTrans;
except
on E:Exception do
begin
ADOConn.RollbackTrans;
end;
end;
这样,只要有一个Execute出错,那么全部事件回滚
 
多人接受答案了。
 

Similar threads

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