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事件,此时会自动重连,当再次连上网络后系统就自动正常。不对之处或有更好的方法请分享。
浙公网安备 33010602011771号