存储过程:
CREATE PROCEDURE checkpwd
(
@ll_find int output,
@username char(18),
@pwd char(18),
@duiname char(18)
)
AS
SELECT @ll_find = count(*)
FROM usert
WHERE username=@username and duiname=@duiname and pwd=@pwd
select @ll_find
GO
三层客户端代码
procedure TFrmLogin.Button2Click(Sender: TObject);
begin
DataModule1.checkpwd.Params.ParamByName('@username').AsString:=uname.Text;
DataModule1.checkpwd.Params.ParamByName('@pwd').AsString:=pwd.Text;
DataModule1.checkpwd.Params.ParamByName('@duiname').AsString:=duiname.Text;
DataModule1.checkpwd.Execute;
edit1.Text:=IntToStr(DataModule1.checkpwd.Params.ParamByName('@ll_find').AsInteger);
end;
其中,checkpwd是TClientDataset,对应的就是上面的存储过程。出现的问题是:
第一次按按钮,正常运行。如果密码(@pwd)正确,edit就显示1,如果密码不正确edit就显示0。但是,如果我再按一下按钮,就会出现异常,EDatabaseError没有找到参数@username.大哥门,我这两天急需解决这个问题。
而且execute换成open也是一样的情况。
CREATE PROCEDURE checkpwd
(
@ll_find int output,
@username char(18),
@pwd char(18),
@duiname char(18)
)
AS
SELECT @ll_find = count(*)
FROM usert
WHERE username=@username and duiname=@duiname and pwd=@pwd
select @ll_find
GO
三层客户端代码
procedure TFrmLogin.Button2Click(Sender: TObject);
begin
DataModule1.checkpwd.Params.ParamByName('@username').AsString:=uname.Text;
DataModule1.checkpwd.Params.ParamByName('@pwd').AsString:=pwd.Text;
DataModule1.checkpwd.Params.ParamByName('@duiname').AsString:=duiname.Text;
DataModule1.checkpwd.Execute;
edit1.Text:=IntToStr(DataModule1.checkpwd.Params.ParamByName('@ll_find').AsInteger);
end;
其中,checkpwd是TClientDataset,对应的就是上面的存储过程。出现的问题是:
第一次按按钮,正常运行。如果密码(@pwd)正确,edit就显示1,如果密码不正确edit就显示0。但是,如果我再按一下按钮,就会出现异常,EDatabaseError没有找到参数@username.大哥门,我这两天急需解决这个问题。
而且execute换成open也是一样的情况。
解决方案 »
- 求助重已有的网页源代码文件中分离出超链接
- 关于事务
- 数据表格中显示图标
- 谁有关于程序优化,文件管理或文件分割的原代码呀!!!
- 关于paradox的锁表问题?
- 让ie变为xp风格?????????????
- 求救~~我想取得操作系统的一些相关信息,比如版本号,,怎么取得?有没有代码,发一个例子~谢谢了
- 有誰用过INSTALLSHIELD3.03?
- StringGride的问题?如何自动改变表格的宽度?或者用鼠标拖动改变也可以。
- 关于条形码问题,有分。
- 小问题!报表的columnheader显示不出来!加急!!!
- 请问在Delphi5下的Combobox怎么实现Delphi6的AutoDropDown功能?
DataModule1.checkpwd.Close;
...
DataModule1.checkpwd.Params.ParamByName('@username').AsString:=uname.Text;
DataModule1.checkpwd.Params.ParamByName('@pwd').AsString:=pwd.Text;
DataModule1.checkpwd.Close;
begin
DataModule1.checkpwd.Close;
DataModule1.checkpwd.Params.ParamByName('@username').AsString:=uname.Text;
DataModule1.checkpwd.Params.ParamByName('@pwd').AsString:=pwd.Text;
DataModule1.checkpwd.Params.ParamByName('@duiname').AsString:=duiname.Text;
DataModule1.checkpwd.Execute;
edit1.Text:=IntToStr(DataModule1.checkpwd.Params.ParamByName('@ll_find').AsInteger);
end;
也8行的,一开始我就这样做的。