Ole连接数据库断开检测

今天在处理客户网络时,会发现常出现程序连接不上数据库的情况,如网络中断,断电等,此时的Ado连接属性还是为True.

本程序用Delphi开发,用的是AdoConnection,当网络断开时,它的Connected还是为True.后来就用TApplicationEvents这个类的OnException事件来检测当前的错误类是否为OleException,如果是的话就重新连接。

记着:当你用adoDataset进行操作时,如果连接不了数据库就会产生OleException异常,此时的异常就让TApplicationEvents来接收了。

写入如下语句即可:

uses ComObj;
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin
  if (E is EOleException) and ((E as EOleException).ErrorCode= -2147467259) then
  begin
   self.ADOConnection1.Connected := False;
   try
     ADOConnection1.Connected := True;
   except
     on E:Exception do
       raise Exception.Create(E.Message);
   end;
  end;
end;

你可以写个sql语句来执行如:adoQuery.Sql.text:='Select GetDate()'

正常情况下可以取的数据,你断开网络再试下,会触发OnException事件,此时会自动重连,当再次连上网络后系统就自动正常。不对之处或有更好的方法请分享。

posted on 2015-07-09 16:50  天上星  阅读(392)  评论(0)    收藏  举报

导航