现在有个程序,有好多对数据库进行操作的,现在有个问题就是程序在执行的中途中数据库给断了,现在关键的问题是重新对数据库连接后,如何从出错的地方继续运行下去;
举个简单的例子:比如有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啦,,小弟现在被搞得焦头烂额的..望各位出谋划策啊
举个简单的例子:比如有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啦,,小弟现在被搞得焦头烂额的..望各位出谋划策啊
try
ADOConnection..BeginTrans;
//你的N條SQL語句
ADOConnection..CommitTrans;
except
ADOConnection..RollbackTrans;
end;
楼主,第一,在异常处理代码中,AdoConnection.close;//改变对象状态,为重新连接做准备. 第二,每处理成功一项,就修改这项的状态,不算你怎么维持这个状态值.下次继续就从未成功的接着来.