救命啊:多线程测试多个数据库连接的问题

                            
数据库中保存了多个单位服务器ip、数据库sid、password、database等字段,需要逐个探测各条记录保存的数据连接信息是否可连,若逐个测试耗费时间太长,所以我想用多线程来实现      
     
  我是在一窗体的主程序中建立的线程,测试数据连结用的是adoconnection      
   
  unit   U_ljqk;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   ComCtrls,     ImgList,   RzGroupBar,  
      Grids,   DBGridEh,   ExtCtrls,     RzListVw,   RzCommon,   RzButton,   RzPanel,  
      DB,   ADODB,   inifiles,   Menus,   CoolTrayIcon,   Syncobjs;  
   
  type  
      Tf_ljqk   =   class(TForm)  
  。。。。。。。。。。  
   
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
     
  Thrd     =     class(TThread)      
  private      
                {     Private     declarations     }      
                FDBInfo:     string;      
                procedure     UpdateUI;                  
  protected      
        procedure     Execute;     override;      
                     
  public      
                constructor     Create(Suspended:     Boolean;     DBInfo:     string);      
  end;      
     
  var      
            f_ljqk:     Tf_ljqk;      
     
  implementation      
     
  {$R     *.dfm}      
     
  constructor     Thrd.Create(Suspended:     Boolean;     DBInfo:     string);      
  begin      
        FDBInfo     :=     DBInfo;      
  end;      
     
  procedure     Thrd.Execute;      
  var      
        ADO:     TADOConnection;      
  begin      
        //self.FreeOnTerminate:=true;      
        ADO     :=     TADOConnection.Create(nil);      
        ADO.Connectionstring     :=     FDBInfo;      
        ado.CommandTimeout:=10;      
        ado.ConnectionTimeout:=5;      
        if     ADO.connected     then      
                Synchronize(UpdateUI)      
        {     Place     thread     code     here     }              
     
  end;      
     
  procedure     Thrd.UpdateUI;      
  begin      
        f_ljqk.label1.caption     :=     '数库1成功';        
  end;      
     
     
  procedure     Tf_ljqk.FormCreate(Sender:     TObject);      
  var      
        v_dbstr:     string;      
  begin      
            with     adoquery1     do      
            begin      
                    while     not     eof     do      
                    begin      
                            v_dbstr:='Provider=SQLOLEDB.1;Password='+trim(FieldByName('loadpwd').AsString)+';'+      
                                'Persist     Security     Info=True;User     ID='+trim(FieldByName('loadid').AsString)+';Initial     Catalog=master'+      
                                ';Data     Source='+trim(FieldByName('ip').AsString)+';pooling=false';      
                        Thrd.Create(false,v_dbstr);      
                        next;          
                    end;      
            end;      
  end;      
     
  错误提示             ....THread     Error     :句柄无效(6)....    
  我知道参数传递时有错误,但我不知道怎么改,哪位大侠能帮我改改吗   ,兄弟我感激不尽    
 

查看回复