小弟在写数据库系统查询的时候想加入线程的功能,请问各位大虾该如何实现啊?
多谢多谢啦!!

解决方案 »

  1.   

    To phy(被爱捶死) 你觉得我这样写,是否有效了,比没有运用单线程效率哪一个高了?
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;
    type
       TTest=Class(TThread)
           protected
               Q_tmp:Tadoquery;
               Q_Str:string;
               procedure Execute;override;
               procedure QProcess;
           public
               constructor create(TQ:Tadoquery;TQ_Str:string);
        end;
    type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        Button1: TButton;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
     Constructor TTest.create(TQ:Tadoquery;TQ_Str:string);//&&&&新建
     begin
         Q_tmp:=TQ;
         Q_Str:=TQ_str;
         inherited create(false);
     end;                                               //&&&&&over
     procedure TTest.QProcess;    //**********查询开始
         begin
              with Q_tmp do
                  begin
                     close;
                     sql.Clear;
                     sql.Add(Q_str);
                     try
                       open;
                       except
                         execsql;
                       end;
                  end;
          end;                 //*************over
     procedure TTest.Execute;
     begin
          FreeonTerminate:=true;
          synchronize(QProcess);
      end;    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    TTest.create(adoquery1,'select * from jobs');
    end;