各位大虾们好。小弟现在做了一个密码登陆的程序。可是现在碰到了一点问题,希望大家帮我看看:
procedure Tmkey.Button1Click(Sender: TObject);
begin  if adoquery1.Active then
     adoquery1.Close;
     adoquery1.SQL.Clear;
     //先让用户输入原来的用户名和密码,并检查!
     adoquery1.SQL.Text:='select * from users where username=:u and password=:p';
     adoquery1.Parameters.ParamByName('u').Value:=trim(edit1.Text);
     adoquery1.Parameters.ParamByName('p').Value:=trim(edit2.Text);
     adoquery1.Open;
     if adoquery1.RecordCount<=0 then
     begin
        showmessage('用户名或密码错误,请查证!');
        exit;
     end
     else
        if edit3.Text=edit4.Text then   //如果两次输的密码相同就修改密码
        begin
           adoquery1.Close;
           adoquery1.SQL.Clear;
           adoquery1.SQL.Add('update users set password=:np');
           adoquery1.Parameters.ParamByName('np').Value:=trim(edit3.Text);
           adoquery1.ExecSQL;
           showmessage('密码修改成功!');
           Close;
        end;end;
这是我做的密码修改代码,编译没问题,但是运行的时候出现提示说我的UPDATE这命令是错误的!这个我就有些奇怪了,在数据库中我是把用户名(usename)是设置的主键但密码(password)不是啊,怎么用这样子咧?盼各位大虾们指点一下,不胜感激!

解决方案 »

  1.   

    没发现有什么问题,只是...你这样做会把users表中所有用户的密码都改成一样的,加个条件吧
      

  2.   

    应该指定用户条件,否则全部用户的密码就变成一样了
    'update users set password=:np where username='user1''
      

  3.   

    adoquery1.SQL.Add('update users set password=:np');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    adoquery1.SQL.Add('update [users] set [password]=:np');
      

  4.   

    同意楼上,猜想users是你所用数据库的关键字!