W
wpyzywpy
Unregistered / Unconfirmed
GUEST, unregistred user!
我的线程类定义****************************
type
TtestThread = class(TThread) //自定义线程
protected
qry: TADOQuery;
Ado: TADOConnection;
procedure Execute;
override;
procedure CreateConnectAdoProc;
//创建连接ADO
procedure OpenSqlProc;
//打开数据集
end;
procedure TtestThread.CreateConnectAdoProc;
var
constr : string;
begin
Qry := TADOQuery.Create(nil);
Ado := TADOConnection.Create(nil);
constr := '........' //略
Ado.ConnectionString := constr ;
//连接ADO串
Ado.LoginPrompt:= false;
if not Ado.Connected then
Ado.Connected := True;
end;
procedure TtestThread.OpenSqlProc;
begin
if Qry.Connection = nil then
Qry.Connection := Ado;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Text := strSql;
Qry.Prepared;
Qry.Open;
end;
procedure TtestThread.Execute;
var
strSql : string;
begin
inherited;
FreeOnTerminate := true;
CoInitialize(nil);
CreateConnectAdoProc;//创建连接ADO
strSql := 'select............';
//略
OpenSqlProc;
//打开数据集
end;
线程类声明实现结束***********************************
具体操作*************************************
procedure form1.Button1Click(Sender: TObject);
begin
TtestThread.create(false);
TtestThread.create(false);
....
....
end;
**********************************结束
问题:
如果我用1个线程的话,如果执行后时间是10秒的话,
用2个的话就是19秒,几乎用多少个执行时间和一个的倍数都是一样的,
并没有看出查询效率有多快,我用的是informix数据库。
type
TtestThread = class(TThread) //自定义线程
protected
qry: TADOQuery;
Ado: TADOConnection;
procedure Execute;
override;
procedure CreateConnectAdoProc;
//创建连接ADO
procedure OpenSqlProc;
//打开数据集
end;
procedure TtestThread.CreateConnectAdoProc;
var
constr : string;
begin
Qry := TADOQuery.Create(nil);
Ado := TADOConnection.Create(nil);
constr := '........' //略
Ado.ConnectionString := constr ;
//连接ADO串
Ado.LoginPrompt:= false;
if not Ado.Connected then
Ado.Connected := True;
end;
procedure TtestThread.OpenSqlProc;
begin
if Qry.Connection = nil then
Qry.Connection := Ado;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Text := strSql;
Qry.Prepared;
Qry.Open;
end;
procedure TtestThread.Execute;
var
strSql : string;
begin
inherited;
FreeOnTerminate := true;
CoInitialize(nil);
CreateConnectAdoProc;//创建连接ADO
strSql := 'select............';
//略
OpenSqlProc;
//打开数据集
end;
线程类声明实现结束***********************************
具体操作*************************************
procedure form1.Button1Click(Sender: TObject);
begin
TtestThread.create(false);
TtestThread.create(false);
....
....
end;
**********************************结束
问题:
如果我用1个线程的话,如果执行后时间是10秒的话,
用2个的话就是19秒,几乎用多少个执行时间和一个的倍数都是一样的,
并没有看出查询效率有多快,我用的是informix数据库。