现在有个程序,有好多对数据库进行操作的,现在有个问题就是程序在执行的中途中数据库给断了,现在关键的问题是重新对数据库连接后,如何从出错的地方继续运行下去;
举个简单的例子:比如有5条语句:
1
2
3:此条进行数据库的打开操作
4
5
当执行到第三条的时候,数据库给断掉了,这时会提示出错的信息(出错的信息用函数对它进行捕获.),这时4,5两条就不会执行下去啦,,当数据库重新连接上后,该如何从第三条开始重新运行呢?
我用过程对错误进行捕获:
procedure AppException(Sender: TObject;E: Exception);
begin 
  //假设出错时就是数据库断开啦
  edit1.Text:=E.Message+'10秒后将进行重新连接';
  timer1.Enabled:=true;
end;
在form的oncreate上写:
Application.OnException := AppException;Timer1Timer过程:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   ADOConnection1.Connected:=true;//进行重新连接
   if ADOConnection1.Connected then
       begin
           timer1.Enabled:=false;
           edit1.Text:='重连成功';
           //重连成功后现在该如何从控制从第3条语句重新执行下去呢,下面的语句该
           //怎么呢?
           .....
           .....
          顺便问下:Delphi6中有没这样的机制,用一条指令,可以从出错的地方重试运行
       end;
  
end;分不是很多,要是谁能搞得定的话,,我可以全部捧上,,先谢谢各位DFW啦,,小弟现在被搞得焦头烂额的..望各位出谋划策啊

解决方案 »

  1.   

    別繼續執行了,用事務處理,斷開後重新操作。
      try
        ADOConnection..BeginTrans;
        //你的N條SQL語句
        ADOConnection..CommitTrans;
      except
        ADOConnection..RollbackTrans;
      end;
      

  2.   

    楼上的主意真是的..同数据库的链接已断开,还回滚得成功吗?:)
    楼主,第一,在异常处理代码中,AdoConnection.close;//改变对象状态,为重新连接做准备. 第二,每处理成功一项,就修改这项的状态,不算你怎么维持这个状态值.下次继续就从未成功的接着来.