以下一个简单的例子。可是我如何让各线程分别执行数据库中的不同记录.
unit Unit2;interfaceuses
Classes,Db, DBTables,StdCtrls, SysUtils;type
j = class(TThread)
private
query:Tquery;
protected
procedure Execute; override; end;implementationprocedure j.Execute;
begin
freeonterminate:=true;
query:=Tquery.Create(nil);
query.DatabaseName:='delphi';
with query do
begin
close;
sql.Clear ;
sql.add('select * from abc');
...
open;
end;
if terminated then
exit;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables;type
TForm1 = class(TForm) Button1: TButton;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
th:array[1..10] of TThread;
implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
th[i]:=j.Create(false);end;
end.
unit Unit2;interfaceuses
Classes,Db, DBTables,StdCtrls, SysUtils;type
j = class(TThread)
private
query:Tquery;
protected
procedure Execute; override; end;implementationprocedure j.Execute;
begin
freeonterminate:=true;
query:=Tquery.Create(nil);
query.DatabaseName:='delphi';
with query do
begin
close;
sql.Clear ;
sql.add('select * from abc');
...
open;
end;
if terminated then
exit;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables;type
TForm1 = class(TForm) Button1: TButton;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
th:array[1..10] of TThread;
implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
th[i]:=j.Create(false);end;
end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货