delphi ADOQuery控件使用Clone的问题
在线程中查询打开一个ADOQuery,打开后通过Clone克隆给主线程的ADOQuery,完了之后释放线程中的ADOQuery没有问题,但是释放线程中的ADOConnection的时候报错。请各位不吝赐教!
可以用下面的模型重现:
delphi ADO
type
TFrom1: TForm(Tform)
FConn: TADOConnection;
FQuery: TADOQuery;
Button: TButton;
procedure ButtonClick(Sender: TObject);
end;
implementation
procedure TForm1.ButtonClick(Sender: TObject);
var
ado1: TADOQuery;
con1: TADOConnection;
begin
con1 := TADOConnection.Create(nil);
con1.ConnectionString := FConn.ConnectionString;
con1.Open;
ado1 := TADOQuery.Create(nil);
ado1.Connection := con1;
ado1.SQL.Add('select XXXXX from XXXX');
ado1.Open;
FQuery.Clone(ado1);
FreeAndNil(ado1);
FreeAndNil(con1);
end;
[解决办法]
con1.connected := False;
con1.free;
[解决办法]
FQuery.Clone(ado1);
FQuery.Connection := nil;
ado1.Connection := nil;
FreeAndNil(ado1);
FreeAndNil(con1);
[解决办法]
你的ADO1是连接在con1的,clone过来的FQuery是连接在con1的,FQuery不要连接到con1就可以