使用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时依然报错,请问怎么回事啊,怎样解决呢?
用了 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时依然报错,请问怎么回事啊,怎样解决呢?
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;
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;
你这样写 再试一下
其实这句话 没有必要 我觉得
你在控件属性里设置不可以吗?
while dm.ADOConn.Connected=true do
begin
dm.ADOConn.Connected := false;
application.ProcessMessages;
end;
while dm.ADOConn.Connected=false do
begin
dm.ADOConn.Connected := true;
application.ProcessMessages;
end;
except
end;用了死办法,实在搞不清ADOConn的Connected是true还是false了
DM 什么东西。哪里出来的。需要USES哪个单元的吗??