很烦的问题!
golcm 2001-10-29 08:36:54 我现在要做一个多线程操作数据库:请看代码?
TCollThread = class(TThread)
TDB:TDatabase;
TQ:TQuery;
Tstor: TStoredProc;
TS:TSession;
end;
procedure TCollThread.IniDatabase();
var
TParS:TParam;
Tps:TParams;
UniqueNumber: Integer;
begin
if TS=nil then
TS:=TSession.Create(TS);
UniqueNumber := GetUniqueNumber;
TS.Name:='LiCM';
TS.SessionName := Format('%s%x', [TS.Name, UniqueNumber]);
if TDB=nil then
TDB:=TDatabase.Create(TDB);
TDB.SessionName := TS.SessionName;
TDB.DatabaseName := Format('%s%x', [TS.Name, UniqueNumber]);
TDB.Connected := false;
TDB.AliasName := BDE_NAME;
TDB.DatabaseName:=TS.SessionName;
TDB.Params.Add('user='+BDE_USER);
TDB.Params.Add('password='+BDE_PWD);
TDB.LoginPrompt := false;
TDB.Connected := true;
if TQ = nil then
TQ:= TQuery.create(TQ);
TQ.SessionName := TDB.SessionName;
TQ.DatabaseName := TDB.DatabaseName;
if Tstor=nil then
Tstor:=TStoredProc.Create(Tstor) ;
Tstor.SessionName:=TDB.SessionName;
Tstor.DatabaseName:=TDB.SessionName;
Tstor.StoredProcName:='proc_sjcj';
Tstor.ParamBindMode:=pbByName;
Tstor.AutoRefresh:=true;
Tps:=TParams.Create;
Tps.CreateParam(ftInteger,'INDEXID',ptInput);
Tpars:=Tparam.Create(Tps,ptInput);
Tstor.Params.AddParam(Tpars);
Tps.CreateParam(ftInteger,'INDEXDATA',ptInput);
Tpars:=Tparam.Create(Tps,ptInput);
Tstor.Params.AddParam(Tpars);
Tps.CreateParam(ftString,'ERRORM',ptOutput);
Tpars:=Tparam.Create(Tps,ptInput);
Tstor.Params.AddParam(Tpars);
with Tstor do
begin
if active then close;
Params[0].AsInteger:= index_id[NLoop];
Params[1].AsInteger:= index_value;
Params[2].Asstring:= ErrorMsg;
Prepare;//出现了"No parameter type of paramter"的错误
Tstor.ExecProc;
Synchronize(write_file);
end;
end;
"No parameter type of paramter"到底是哪里出错了.
请各位大侠帮忙了!一定给分