首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi ADOQuery控件使用Clone的有关问题

2013-03-01 
delphi ADOQuery控件使用Clone的问题在线程中查询打开一个ADOQuery,打开后通过Clone克隆给主线程的ADOQuer

delphi ADOQuery控件使用Clone的问题
在线程中查询打开一个ADOQuery,打开后通过Clone克隆给主线程的ADOQuery,完了之后释放线程中的ADOQuery没有问题,但是释放线程中的ADOConnection的时候报错。请各位不吝赐教!
可以用下面的模型重现:


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;
delphi ADO
[解决办法]
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就可以

热点排行