• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

真没想到,我的第一个有关存储过程的程序就通不过,大家帮忙看看,问题究竟在哪?代码相当简单

wolf416 2001-07-24 02:32:16
第一步:1.在SQLServer上的dwdm16的数据库上建立登录存储过程

create procedure LoginUserCheck @UserName varchar(20),@PassWord varchar(20),@
Privilege varchar(20) output
as
select @Privilege=Privilege
from loginuser
where UserName=@UserName and PassWord=@PassWord

第二步 在SQLServer上测试例子:

declare @Privilege varchar(20)
execute LoginUserCheck 'Administrator','ihwwdm',@Privilege output
select @Privilege

以上两步均没有问题

第三步:在窗体上增加一StoredProc,一个Label,一个Button,设定StoredProc1的Database Name为dwdm16,设StoredProcName为LoginUserCheck。再增加Table1,其Database Name为dwdm16,TableName为loginuser,并将Active设为true.

第四步:双击Button,增加下列代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StoredProc1->Close();
StoredProc1->ParamByName("UserName")->AsString="Administrator";
StoredProc1->ParamByName("PassWord")->AsString="ihwwdm";
if(StoredProc1->Prepared==false)
StoredProc1->Prepare();
StoredProc1->ExecProc();
Label1->Caption=StoredProc1->ParamByName("Privilege")->AsString;


}

第五步,RUN
但当击Button时,出现下列提示:
Parameter 'UserName' not found

最后,我想知道这究竟问题出在哪里??我差不多都是按书上来的啊!

...全文
76 点赞 收藏 8
写回复
8 条回复
szwxj 2001年10月09日
原因可能是你在设计期没有设置参数。
解决的方法是:
1、在设计期设置参数。
2、修改尼的代码:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
StoredProc1->Close();
StoredProc1->Params->CreateParams(...); //创建你所需要的参数。
... //继续创建参数。
StoredProc1->ParamByName("UserName")->AsString="Administrator";
StoredProc1->ParamByName("PassWord")->AsString="ihwwdm";
if(StoredProc1->Prepared==false)
StoredProc1->Prepare();
StoredProc1->ExecProc();
Label1->Caption=StoredProc1->ParamByName("Privilege")->AsString;


}

回复 点赞
开始领悟 2001年10月09日
gz
回复 点赞
yueyue 2001年10月09日
up
回复 点赞
LuoGD 2001年10月09日
up.
你没有用StoredProc1->Params->CreateParams(...)创建UserName,PassWord参数.
回复 点赞
april_d 2001年10月07日
gz
回复 点赞
wolf416 2001年07月24日

当我将UserName改为@UserName时,如下
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StoredProc1->Close();
StoredProc1->ParamByName("@UserName")->AsString="Administrator";
StoredProc1->ParamByName("@PassWord")->AsString="ihwwdm";
if(StoredProc1->Prepared==false)
StoredProc1->Prepare();
StoredProc1->ExecProc();
Label1->Caption=StoredProc1->ParamByName("@Privilege")->AsString;


}


可又出现下列提示:
Could not find stored procedured 'dbo.LoginUserCheck;1'
这又是怎么回事?
回复 点赞
wolf416 2001年07月24日
是不是我说的不够清楚
回复 点赞
wolf416 2001年07月24日
很难吗?这差不多是书上的例子,但我却没办法 :( 5555555555555555555~~~~~~~~~~~~~~
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2563

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告