ADO事务与SQL异常的捕获(100)

  • 主题发起人 主题发起人 kukujaky
  • 开始时间 开始时间
K

kukujaky

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi7+SQL2000ADO事务捕获SQL的异常信息,我是将业务错误提示转换为SQL异常,然后客户端捕获,提示给用户,现有如下情况:btn1的事务能捕获到异常,而btn2不能捕获。查了一下以前的贴子,没看到相关的问题,请高手帮帮忙,考虑到需要更新一些表,有些地方要等更新完后再进行判断。procedure TForm1.btn1Click(Sender: TObject);begin con1.BeginTrans; try qry1.SQL.Text := 'if 0=0'+#13#10 +'begin'+#13#10 +' raiserror(' + QuotedStr('出错') + ', 16, 1)'+#13#10 +' return'+#13#10 +'end' +#13#10 +'select 1'+#13#10; qry1.ExecSQL; con1.CommitTrans; ShowMessage('执行'); except on E: Exception do begin ShowMessage(e.Message); con1.RollbackTrans; ShowMessage('回滚'); //有执行到这边 ,会回滚 end; end;end;procedure TForm1.btn2Click(Sender: TObject);begin con1.BeginTrans; try qry1.SQL.Text := 'select 1'+#13#10 +'if 0=0'+#13#10 +'begin'+#13#10 +' raiserror(' + QuotedStr('出错') + ', 16, 1)'+#13#10 +' return'+#13#10 +'end' +#13#10; qry1.ExecSQL; con1.CommitTrans; ShowMessage('执行'); //竟然捕获不到异常,郁闷 except on E: Exception do begin con1.RollbackTrans; ShowMessage(e.Message); ShowMessage('回滚'); //没执行到这边,不会回滚 end; end;end;
 
后退
顶部