我在一张表中保存着登陆信息,如下user             password
张三             123
李四             44648424
王二             68947216
我想在程序中用两个Edit控件来实现输入用户名和密码!怎么来判断输入的用户名和密码是表中保存的,并且是正确的?小弟我才学数据库不久!希望各位给出较详细的代码!谢谢!

解决方案 »

  1.   

    Table1.FieldByName('user').AsString
    Table1.FieldByName('password').AsString
      

  2.   

    var
      user_name,user_passwd:string;
    begin
      user_name:=Edit1.text;
      user_passwd:=Edit2.text;
      with Query1 do
      begin
        SQL.clear;
        SQL.add('select * from tablename');
        SQL.add('where user=user_name and password=user_passwd');
        Open;
      end;
      if Query1.recordcount=1 then
        //自己的代码
    end;
      

  3.   

    这个RecordCount和RecNo有什么不一样啊?/
      

  4.   

    一般大家都这样实现,代码你可以通过在database版查找“登陆”或者“登录”,还是那句话--比超市还全!
      

  5.   

    var
      name,pass: string;
    begin
      name := trim(Edit1.text);
      pass := Edit2.text;
      with ADOQuery1 do
      begin
        SQL.clear;
        SQL.add('select * from tablename where user=''' +name +'''');
      end;
      if ADOQuery1.recordcount<> 0 then
      begin
        if pass<> ADOQuery1.FieldByName('user').AsString
        begin
          showmessage('密码错误!');
        end
        else begin
          showmessage('成功登陆');
        end;
      end
      else begin
        showmessage('用户不存在!');
      end;
        
      

  6.   

    recordcount是用select语句选出来的元组数,而RecNO是但前指针指向的元组在选出来元组中的编号
      

  7.   

    我按照各位的方法,已经基本实现了要求,可是有个小问题:SQL语句的添加,如果在程序代码中添加,会出现“丢失SQL属性”的提示!如果在程序设计阶段输入SQL语句,则不会有问题,为什么会这样?我是这样写的:
      var
      name,pass: string;
    begin
      name := trim(Edit1.text);
      pass := Edit2.text;
      with ADOQuery1 do
      begin
        SQL.clear;
        SQL.add('select user,pass from login where user='+name+'and pass='+pass);
        open;
      end;
      if ADOQuery1.recordcount<> 0 then
      begin
        if pass<> ADOQuery1.FieldByName('pass').AsString
        begin
          showmessage('密码错误!');
        end
        else begin
          showmessage('成功登陆');
        end;
      end
      else begin
        showmessage('用户不存在!');
      end;
      

  8.   

    SQL.clear;后面跟个close 试试
      

  9.   

    begin
     adoquery1.clear;
     sqlstr:='select * from tablname where (user='''+edit1.text+''')';//sqlstr为   定义的一个string类型的变量;
     adoquery1.sql.add(sqlstr);
     adoquery1.open;
    if adoquery1.recordcount=1 then
     begin
       if adoquery1.fieldbyname('password')=trim(edit2.text) then
        begin
         from2.showmodale;//登陆成功,显示某窗体。
        end
       else
       showmessage('密码错误');
     end
    else 
    showmessage('此用户名不存在');
    end;
      

  10.   

    SQL.add('select user,pass from login where user='+name+'and pass='+pass);<<------
    pass ?哪来的pass ,你的字段名不是叫password 吗
      

  11.   

    to zjy6631(刘阿木)
    我只是暂时代替一下而已的!
      

  12.   

    不错,在代码开头加一个close试是
      

  13.   

    我给个程序你自己看看!
    这是我做的!水费管理系统!
    procedure TpassForm.BitBtn1Click(Sender: TObject);
    begin
     flashwindow(passForm.handle,true);
     if (trim(editcode.text)='') then
     begin
       messagedlg('请输入您的工号!',mtinformation,[mbyes],0);
       editcode.clear;
       editpass.clear;
       editcode.setfocus;
     end
     else begin
     //判断是否是正确用户
       with adoquery1 do
       begin
        close;
        sql.Clear;
        sql.Add('select * from zggl where 职工号=:zgh');
        parameters.ParamByName('zgh').Value:=editcode.text;
        open;
       if (recordcount=0)
       then
       begin
       messagedlg('您的工号错误!请重新输入!',mterror,[mbok],0);
       editcode.Clear;
       editpass.clear;
       editcode.SetFocus;
       exit;
       end
        //判断是否密码正确
       else
       begin
        sql.clear;
        sql.Add('select * from zggl where 职工号=:zgh and 密码=:mm');
        parameters.ParamByName('zgh').Value:=editcode.text;
        parameters.ParamByName('mm').Value:=editpass.text;
        open;
         if (recordcount=0)
         then
         begin
         messagedlg('密码错误!请注意大小写!',mterror,[mbok],0);
         editpass.Clear;
         editpass.SetFocus;
         exit;
         end
         //成功登陆
         else if (recordcount<>0)
         then
         begin
          with adoquery2 do
          begin
           close;
           sql.Clear;
           sql.Add('select * from dlxx');
           open;
           first;
           insert;
           fieldbyname('进入时间').AsDateTime:=now;
           fieldbyname('职工号').AsString:=editcode.Text;
           post;
          end;
          passform.close;
         end
         else
         begin
          messagedlg('连接错误',mterror,[mbok],0);
          exit;
         end;
        end;
       end;//with adoquery1 do
     end;
    end;