ADOConnection断线重连

问题: ADOConnection断线重连问题
描述:

使用ADOConnection连接oracle数据库,开始正常,当网络断开时数据库连接失败(此时查询ADOConnection.connected属性是true),
用了 ADOConnection的query在open时都报错,想了一个解决方法,使用定时器判断如下:

var
  adoq : TADOQuery;

begin
  adoq := TADOQuery.Create(nil);
  adoq.Connection := dm.ADOConn;
  adoq.Close;
  adoq.SQL.Clear;
  adoq.SQL.Add('select * from cat where 1=0');
  try
    adoq.Open;
  except
    try
      dm.ADOConn.Connected := false;
      dm.ADOConn.Connected := true;
    except
    end;
  end;
end;

按理说应该重连上了,可是结果还是未连接状态。query在open时依然报错,请问怎么回事啊,怎样解决呢?

解决方案1:

var
  adoq : TADOQuery;
begin
  adoq := TADOQuery.Create(nil);
  adoq.Connection := dm.ADOConn;
  adoq.Close;
  adoq.SQL.Clear;
  adoq.SQL.Add('select * from cat where 1=0');
  try
    try
      if dm.ADOConn.Connected then  
        dm.ADOConn.Connected := false;

      dm.ADOConn.Connected := true;
    except
    end;
    adoq.Open;
  except
  end;
end;

解决方案2:

var
  adoq : TADOQuery;

begin
  adoq := TADOQuery.Create(nil);
  adoq.Connection := dm.ADOConn;
  adoq.Close;
  adoq.SQL.Clear;
  adoq.SQL.Add('select * from cat where 1=0');

  try
    try
      dm.ADOConn.Connected := false;
      dm.ADOConn.Connected := true;
    except
    end;
    adoq.Open;
  except
  end;
end;

以上介绍了“ ADOConnection断线重连问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3187629.html

猜你喜欢

转载自www.cnblogs.com/mobilecard/p/9096657.html