function Tmainform.CheckUser(AUsername, AUserpwd: string): integer;
var
   query1 :Tquery;
begin
    query1 := Tquery.Create(nil);
    query1.DatabaseName := 'test';
  try
    begin
    query1.SQL.Clear;     
    query1.SQL.Add('select S_Name ,S_Pwd from user');
    query1.SQL.add('where S_Name =:Username');
    query1.SQL.add('and where S_Pwd =:Userpwd');
    query1.ParamByName('S_Name').AsString := AUserName;//这里出现的错误
    query1.ParamByName('S_Pwd').AsString := AUserPwd;//这里也是
    query1.Open;
    if query1.RecordCount = 0 then
    begin
      MessageDlg('用户名错误',mtError,[mbok],0);
      Result := -1;
      Exit;                         //检查用户名;
    end else begin
      if query1.FieldByName('S_Pwd').AsString <> AUserPwd then
      begin
        MessageDlg('用户名或口令错误',mtError,[mbok],0);
        Result := -1;
        Exit;
      end
      else Result := Query1.FieldByName('class').AsInteger;
      exit;
    end;
    Close;
    Free;
    end;
  except
     Result := -1;
     MessageDlg('连接数据库出错',mtError,[mbok],0);
  end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ raised exception class EDdatabaseError with message 'parameter'S_Name'
not found'.
我的user.db表里有S_Name,S_Pwd,S_Class 等字段

解决方案 »

  1.   


        query1.SQL.add('where S_Name =:Username');
        query1.SQL.add('and where S_Pwd =:Userpwd');
        query1.ParamByName('Username').AsString := AUserName;//这里出现的错误
        query1.ParamByName('Userpwd').AsString := AUserPwd;//这里也是
      

  2.   

    在query1中添加三个S_Name,S_Pwd,S_Class参数试试
      

  3.   

    什么呀!
        query1.SQL.Add('select S_Name ,S_Pwd from user ');//尾部加空格
        query1.SQL.add('where S_Name =:Username');
        query1.SQL.add('and S_Pwd =:Userpwd');//不要用两个where
        query1.ParamByName('Username').AsString := AUserName;//这里出现的错误
        query1.ParamByName('Userpwd').AsString := AUserPwd;//这里也是
      

  4.   

    query1.ParamByName('S_Name').AsString := AUserName;//'s_name'是你表中的字段名,这样用不对
    按照你写的程序应该是
    query1.ParamByName('username').AsString := AUserName;
    也就是说parambyname('')中的值应该是query1.SQL.add('where S_Name =:Username');中:后的部分