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

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

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

...全文
126 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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~~~~~~~~~~~~~~

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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