Adoqury连接出错后怎么恢复?(100分)

  • 主题发起人 主题发起人 没理头号
  • 开始时间 开始时间

没理头号

Unregistered / Unconfirmed
GUEST, unregistred user!
Adoqury连接出错后怎么恢复?
比如我用下面这个过程:
with adoquery1 do
begin
while not eof do
begin
...
next;//假如这步网络断了或是数据库连不上了导致出错,
//下次我还要执行这个过程,怎么恢复制才行?
//我用try next; excpect close;open;end;都不行,怎么弄才行
end;
end;
 
应该将ADOCONNECTION以及ADOQUERY重新打开。出现这种情况,最好还是不要这样处理,因为
有可能破坏了数据的完整性。
 
楼上的,那你说怎么处理呢?
with adoquery1 do
try
begin
while not eof do
begin
...
next;
end;
end;
except
close;
open;
end;
这是这样处理,我已打开了adoquery啊?
 
采用事务处理,如果出现异常就回滚,然后退出,再重新操作一次
 
To antic_ant:
能说清楚点吗?
我现在的问题是只要与数据库的连接一断,则程序对adoquery的作何操作都报错,
说odbc连接错误。
(哦,我忘说了,我是用ODBC连接SQL Server2000的)
 
看来也只能用事务处理了。
 
to 板手:
你的意思是怎么做啊?
我现在关键问题是和sql server重连搞不定,对于其它的不考虑
 
TO:没理头号
(哦,我忘说了,我是用ODBC连接SQL Server2000的);
用ADOQuery还用ODBC连接SQL Server2000吗?直接连不就可以了吗?(你骗谁?)
 
楼上的,请你看清别人的问题,别乱叫!
不懂你就一边凉快去[:(!]
 
ok,我搞定了,与大家分享,明天结束此问题
procedure TForm1.Timer1Timer(Sender: TObject);
begin
application.ProcessMessages;
timer1.Enabled := false;
try
self.ADOQuery1.Close;
ADOQuery1.SqL.clear;
self.ADOQuery1.SQL.Add(s);
self.ADOQuery1.Open;
self.ListBox1.Items.Add('yes');
except

self.ADOQuery1.Close;
self.ADOQuery1.Free;

self.ADOQuery1 := TADOQuery.Create(application);
self.ADOQuery1.ConnectionString := c;

self.ListBox1.Items.Add('no');
end;
self.Invalidate;
timer1.Enabled := true;
end;
 
谢谢格位
 
后退
顶部