delphi连接SQL的登录界面时报错

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:21:53
DataModule1.qryUsers.SQL.Clear;
DataModule1.qryUsers.SQL.Add('select RUSER_ID,R_PASSWORD,LIMIT from R_USER where RUSER_ID =:userName and R_PASSWORD =:userPwd');
DataModule1.qryUsers.Parameters.ParamByName('userName').Value := usUserID ;
DataModule1.qryUsers.Parameters.ParamByName('userPwd').Value := sPassword ;
if DataModule1.qryUsers.Active then DataModule1.qryUsers.Close;
请帮忙看看这代码哪有问题,
报错说找不到'userName'
delphi与sql sever连接测试成功。
usUserID ,sPassword是全局变量,获取到了输入框中用户ID和密码

你上边的代码没问题的啊。

你看一下创建的顺序,是不是DATAMODULE没有第一个创建。

先确认是否有userName这个变量
如果有的话
就是[where RUSER_ID =:userName and R_PASSWORD =:userPwd]
这句错了,等号后面没有冒号.

RUSER_ID = userName
如果userName是string型 那么应该写成RUSER_ID = '''+userName+'''

要这么复杂吗?我是这样写的
function chk_pass(ygid,pass: string): Boolean;
var t:TADOQuery;
begin
t:=TADOQuery.Create(DM);
t.Connection:=dm.con;
t.SQL.Add('select * from 操作员表');
t.SQL.Add(' where 工号='''+ygid+'''');
t.sql.add(' and 密码='''+pass+'''');
t.Open;
if T.RecordCount=0 then Result:=false else result:=true;
t.Free;
end;
以后直接调用这个函数就可以了

改为
DataModule1.qryUsers.SQL.Clear;
DataModule1.qryUsers.SQL.Add('select RUSER_ID,R_PASSWORD,LIMIT from R_USER where RUSER_ID =:userName and R_PASSWORD =:userPwd');
DataModule1.qryUsers.Parameters[0].Value := u