小弟初来这里,做了一个登陆窗口,有用户名字l_user,和密码框l_password,用ado连接了sql2000 的一个数据库,其中数据库中有个表T_user,表中有用户名user,密码pswd,请问怎么样才可以读取出来呀,并且和登陆窗口的验证,谢谢高手们给代码啊,谢谢最好完整点。

解决方案 »

  1.   

    with adoquery1 do
    begin
      close;
      sql.text:='select pswd from t_user where user='''+l_user+'''';
      open;
    end;
    if adoquery1.fields[0].asstring=l_password then
    begin
      ....//用户密码正确
    end;
      

  2.   

    var
      num,user,pass,temp:string;
    begin
      user := Trim(edit1.Text);
      pass := Trim(edit2.Text);  with adoquery1 do
      begin
        Close;
        sql.Clear;
        sql.Text := 'select 用户编号 from 登陆清单 where 姓名='''+user+'''and 密码='''+pass+'''';
        Open;
        temp := adoquery1.fieldbyname('用户编号').AsString;
        if temp<>'' then
        begin
          mainform.N4.Enabled := false;
          mainform.N5.Enabled := false;
          mainform.N6.Enabled := false;
          mainform.N9.Enabled := false;
          //mainform.N10.Enabled := false;
          mainform.N11.Enabled := false;
          mainform.N13.Enabled := false;      mainform.N16.Enabled := false;
          mainform.N17.Enabled := false;
          mainform.N19.Enabled := false;      //查看是否具有管理权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''管理权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N5.Enabled := true;
          end;
          //检查是否具有添加权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''添加权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N9.Enabled := true;
          end;
          //检查是否具有搜索权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''搜索权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N20.Enabled := true;
          end;
          //检查是否具有查看权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N11.Enabled := true;
          end;
          //检查是否具有查看照片权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看照片权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N13.Enabled := true;
          end;
          //检查是否具有阅读帮助权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''阅读帮助权限''';        Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N16.Enabled := true;
              mainform.N17.Enabled := true;
          end;
          //插件是否具有查看版本权限
          with adoquery1 do
          begin
            Close;
            sql.Clear;
            sql.Text := 'select 权限序号 from 权限清单 where 用户编号='''+temp+'''and 权限名称=''查看版本权限''';
            Open;
            if fieldbyname('权限序号').AsString<>'' then
              mainform.N19.Enabled := true;
          end;
          mainform.Show;
          login2.Hide;
          mainform.StatusBar1.Panels[1].Text := edit1.Text;
        end;
      end;一本书上的源代码,你自己看看,然后比着改成你那个样子就行了
    很简单的
    edit1 edit2分别是用户名和密码
      

  3.   

    procedure yanzheng(id,password: string);
    var
    sql: string;
    begin
      sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]);
      try
        adoquery1.close;
        adoquery1.sql.clear;
        adoquery1.sql.add(sql);
        adoquery1.open;
        if adoquery1.recordcount = 1 then showmessage('OK');
      except
        showmessage('database error');
      end;
    end;
      

  4.   

    procedure Tlogin.Button1Click(Sender: TObject);
    var 1_user,1_password,temp:string;
    begin
    1_user:=edit1.Text;
    1_password:=edit2.Text;
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('select user from T_user');
    adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+'''');
    adoquery1.Open;
    temp:=adoquery1.fieldbyname('user').AsString;
    if temp='' then
      begin
       showmessage('用户名或密码错误,请重新登陆');
       edit1.Clear;
       edit2.clear;
       end
     else
       begin
        mainform.visible:=true;
        login.Hide;
      end;
      

  5.   

    adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+'''');这句有点不明白呀,怎么那么多'号,意思应该是user=l_user并且密码=l_password,分号我晕
      

  6.   

    我都给你写了,你好好看了吗?试了吗?
    sql:= format('select * from t_user where user=''%s'' and pswd=''%s''',[id,password]);
      

  7.   

    adoquery1.SQL.Add('where user='''+1_user+''' and 密码='''+1_password+'''');
    这句有点不明白呀,怎么那么多'号
    -----------------------------------Delphi中字符串是以''包含的,那么如何标识一个字符串中的'号呢?只有用转义字符'号了,
    另外sql语句中,如果字段是字符串型,那么它们的取值也要用''包括。
      

  8.   

    le1982sina.com  谢谢高手,555555
      

  9.   

    晕,高手帮忙啊,老说我adoquery1:field("uid")找不到,晕,怎么会这样啊
    var l_user,l_password,temp:string;
    begin
    ADOConnection1.ConnectionString :='SQLOLEDB.1;Persist Security Info=False;User ID=l;Initial Catalog=mysql;Data Source=LYJ';
    l_user:=trim(edit1.Text);
    l_password:=trim(edit2.Text);
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.add('select user from T1');
    adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+'''');
    adoquery1.Open;
    temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方
    if temp='' then
      begin
       showmessage('用户名或密码错误,请重新登陆');
       edit1.Clear;
       edit2.clear;
       end
     else
       begin
        timer1.Enabled :=true;
      end;
      

  10.   

    去www.playicq.cn上大把这样的例子
      

  11.   

    adoquery1.SQL.add('select user from T1');
    adoquery1.SQL.Add('where uid='''+l_user+''' and psw='''+l_password+'''');
    adoquery1.Open;
    temp:=adoquery1.fieldbyname('uid').AsString ;//出错就停留在这个地方晕能不出错吗,你只select user,你怎么可能fieldbyname('uid')呢?select user,uid from t1 where ......试试。
    再者说了,你取出它有什么用吗?它根据用户输入的id和password去数据库查询,返回结果集,如果结果集为0不就说明验证错误吗??为什么要把uid取出来呢。
      

  12.   

    直接用adoquery1.recordcount是否=0不就可以验证了。select 的时候直接select * 就可以了啊。唉,上面很多人都给出正确的语句了。