多个adpquery, 指定一个adoconnector,当我有一个线程查询时,如
tquerythread.Create(false,adoquery1);可以
当跑第二个时,tquerythread.Create(false,adoquery2),
报错,我看书上说要用不同的session, 我要同时查5个query,
不知道具体怎么实现,还有同步问题,我怎么知道5个sql都执行完了?
具体给个例子!谢谢!

解决方案 »

  1.   

    ADOQuery是COM对象。请在TThread.Execute()函数中,
    开始和结束分别调用CoInitialize和CoUninitialize两个API函数,这是多线程中使用COM对象必需的。
      

  2.   

    unit u_querythread;
    interface
    uses
      Classes,ADODB;type
      tquerythread = class(TThread)
      private
        { Private declarations }
        fquery:tadoquery;
        
      protected
        procedure Execute; override;
      public
        constructor  Create(suspended:boolean;query:tadoquery);
      end;implementation
     uses ufrm_shape;constructor   tquerythread.Create(suspended:boolean;query:tadoquery);
      begin
      inherited  Create(suspended);
      fquery:=query;
      freeonterminate:=true;  end;procedure   tquerythread.showresult();
    begin
     form1.DataSource1.DataSet:=fquery;
    end;procedure tquerythread.Execute;
    begin
      { Place thread code here }
      fquery.Open;
    end;
    end.
    这是querythread的代码, 在主线程中tquerythread.Creat(false,adoquery1);
    可以,但再创建一个线程时
    tquerythread.Creat(false,adoquery2),报错,什么非同步运行,该怎么解决?
    望大家拔刀相助!