[Delphi] 多執行緒和資料庫存取

來源出處:http://www.programmer-club.com.tw/ShowSameTitleN/delphi/6493.html

2002/3/16 上午 09:36:50
感謝你… *^_^*
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, DBTables;

type
  TTestThread = Class (TThread)
    private
     FQuery:TQuery;
     FEdit:TEdit;
    { Private declarations }
    protected
     Procedure Execute;Override;
    public
    { Public declarations }
     Constructor Create(ltb:TQuery;url:TEdit);
    end;

  TForm2 = class(TForm)
    DataSource1: TDataSource;
    Database1: TDatabase;
    Edit1: TEdit;
    Query1: TQuery;
    Session1: TSession;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    test1:TTestThread;
  end;

var
  Form2: TForm2;

implementation
uses unit1;

{$R *.DFM}

Constructor TTestThread.Create(ltb:TQuery;url:TEdit);
begin
  inherited Create(False);
  FQuery:=ltb;
  FEdit:=url;
  FreeOnTerminate:=True;
end;

Procedure TTestThread.Execute;
begin
  FreeOnTerminate:=True;

  with FQuery do
  begin
    FQuery.Close;
    FQuery.sql.Clear;
    FQuery.sql.add(‘select url from url’);
    FQuery.open;
  end;

  while not FQuery.Eof do
  begin
    Form2.Edit1.Text:=FQuery.fieldByName(‘URL’).AsString;
    FQuery.Next;
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  test1:=TTestThread.Create(Form2.Query1,Form2.Edit1);
end;
end.

發表留言