例如有一个登陆界面,要求输入用户名和密码,下面有一个登陆的按钮。当按下登陆按钮的时候,要求验证输入框中的用户和密码是否在sql数据库的ID表中。ID表中有ID,password,和quanxian三列,当ID和password匹配的时候,返回quanxian中的值。如果没有则返回值为0。问要用什么控件,具体代码是什么。

解决方案 »

  1.   

    1、一种是使用ADOconnection自带的验证方式
       设置LoginPromt:=true;
    2、另外一种是自己设计的方式,不过不是很安全
       你可以制作一个函数
       Function UsePowerCheck(UserID:string;UserName,UserPassword:string;):boolean;
       begin
         with adoquery1 do 
         begin
           close;
            sql.clear;
            sql.add('select uid, uname,upassword from tblpower');
            sql.add('where uid='''+userid+''' and uname='''+username+''' and upassword='''+userpassword+'''');
            open;
            if Recordcount<>0 then
               result:=true
            else
               result:=false
         end;  
       end;
      

  2.   

    SmallHand(小手) 
    ADOconnection这个控件验证的是sql数据库的用户和密码的吧?我的用户和密码是保存在数据库中的一张表上的。我要返回的值是该用户记录中的对应quanxian列中的值,不是一个布尔值。
    还有你这段代码是写在那个控件里的?
      

  3.   

    就用edit控件就可以,如果用户输入的不正确,可以捕捉系统反馈的错误信息,然后提示给用户!
      

  4.   

    var ss:string;//不知道你的权限是什么类型的 我想可能是字符型的吧
    with adoquery1 do 
         begin
           close;
            sql.clear;
            sql.add('select * from tblpower');
            sql.add('where uid='''+userid+''' and uname='''+username+''' and upassword='''+userpassword+'''');
            open;
    if Recordcount<>0 then  //执行出错处理
    ss:=adoquery1.fieldname['quanxian'].value;//一个用户应该只一条记录吧 我想
    .......
      

  5.   

    to sunny518(灵犀) 
    觉得你的代码可行,不过上午没时间试了,下午试。先回一下
      

  6.   

    to setfocus(東不懂) 
    我的目的不光是验证是不是合法用户,还要根据用户给出相应的权限呀
      

  7.   

    给你一个代码,不过不是SQL数据库的
    你试着改改,应该能用的。
    procedure TLogoForm.BitBtn1Click(Sender: TObject);
    var
       cs,ce: String;
    begin
       Table1.Active := True;
       cs := Edit1.Text;
       ce := Edit2.Text;
       with Table1 do
          if Locate('username;passwd',VarArrayOf([cs,ce]),[loPartialKey]) then
          begin
             //下面的变量是global.pas里定义的
             TrueName := Table1['name'];
             UserName := Table1['username'];
             Passwd := Table1['passwd'];
             UserLevel := Table1['level'];
             Table1.Active := False;
             modalresult := mrOK;
          end
          else
          begin
             ShowMessage('用户名和密码错误!');
             Edit1.SetFocus;
          end;
    end;
      

  8.   

    你可以关联权限表和用户表,上述方法仅仅是一个确认用户是否在系统内,
    if 记录数=0 then
       该用户名不存在,或者密码错误,所以返回 false (禁止登陆)
    else
       用户名存在且密码正确返回 true
    你可以根据这个函数判断是否是你系统中注册的用户!
    然后根据该用户设定权限!