很烦的问题!

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"到底是哪里出错了.
请各位大侠帮忙了!一定给分



...全文
70 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧