我写了个用户管理的程序,但不知道应该怎么更改 用户的密码?
登陆代码是:
procedure Tyhdl.BitBtn1Click(Sender: TObject);
var f:boolean;
begin
  f:=false;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('select username,password from admin') ;
  if not adoquery1.Active then
    adoquery1.Open ;
  adoquery1.First ;
  inputtimes:=inputtimes+1;
  while not adoquery1.Eof do
    begin               //*****while
      if combobox1.Text =adoquery1.FieldValues['username'] then
      begin               //判密码是否正确
             f:=true;
             if edit2.text=adoquery1.FieldValues['password'] then
                begin
                  User:= adoquery1.FieldValues['username'];
                  pass:= adoquery1.FieldValues['password'];
                  cx.show;
                  yhdl.hide;
                end
             else
                if inputtimes>3 then
                   begin
                     showmessage('密码次数超过3次,你无权使用!') ;
                     application.Terminate;
                   end
                else
                   begin
                     showmessage('用户密码输入错误!请再输入一次。');
                     edit2.SetFocus;
                     inputtimes:=inputtimes+1;
                   end;
      end ;                         //判密码是否正确 结束
      adoquery1.Next;
    end;               //****while结束
    if f=false then
    begin
     showmessage('你没有注册,无权使用!');
     application.Terminate ;
    end;
    adoquery1.Close ;
end;
procedure Tyhdl.FormActivate(Sender: TObject);  
begin
  inputtimes:=0;
  combobox1.SetFocus ;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select username from admin');
  if not adoquery1.Active  then
     adoquery1.Open ;
  adoquery1.First ;
  while not adoquery1.eof  do
  begin
    combobox1.Items.Add(adoquery1.FieldValues['username']);
    adoquery1.Next  ;
  end;
  combobox1.ItemIndex :=0;
  adoquery1.Close ;
end;该密码代码是:
procedure Tggmm.Button1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
if edit1.text=''
then
 showmessage('请输入你的新密码!!')
else if
edit2.Text <> edit1.Text
then
begin
showmessage('请重新输入您的确认码');
edit2.SetFocus;
end
else
begin
ADOQuery1.sql.add('update admin set password = ' + '"' +  edit1.text +'"' );
ADOQuery1.open;
end;
end;是我SQL语法错误吗?望高手 解救!!

解决方案 »

  1.   

    通常ADOQuery在使用前需要ADOQuery1.Active := False;
    另外,没有结果集返回的,应该用ADOQuery1.ExecSQL,而不应该使用open
      

  2.   

    还是不行啊!
    UPDATE yuju 的语法错误!
      

  3.   

    ADOQuery1.sql.add('update admin set password = ' + '"' +  edit1.text +'"' );
    这个不对
    ADOQuery1.sql.add('update admin set password = ' + '''' +  edit1.text +'''' );应该是单引号,不是双引号
      

  4.   

    Project xsglxt.exe raised exception class EOLeException with message 'UPDATE 语句的语法错误.'Process stopped. Use Step or Run to continue.
      

  5.   

    不会吧,你把sql语句的字符串加到一个组件里,然后拷贝,粘贴到sql查询工具里,应该是可以执行的啊。你的password字段是什么类型
      

  6.   

    单步跟踪,看看那里错了,如果是sql语法错误,那么
    把sql语句这一段改成参数写法
    ADOQuery1.sql.add('update admin set password = :#password' );
       ADOQuery1.Parameters.ParamByName('#password').Value := edit1.text;
      

  7.   

    把ADOQuery1.open;
    改成adoquery1.execsql;procedure Tggmm.Button1Click(Sender: TObject);
    begin
    ADOQuery1.SQL.Clear;
    if edit1.text=''
    then
     showmessage('请输入你的新密码!!')
    else if
    edit2.Text <> edit1.Text
    then
    begin
    showmessage('请重新输入您的确认码');
    edit2.SetFocus;
    end
    else
    begin
    ADOQuery1.sql.add('update admin set password = :#password' );
       ADOQuery1.Parameters.ParamByName('#password').Value := edit1.text;
    ADOQuery1.execsql;
    end;
    end;
      

  8.   

    算了,给你写个吧。。如果数据库没问题,连接没问题,那下面的代码应该可以完成你需要的操作。procedure Tggmm.Button1Click(Sender: TObject);
    begin
       
       if edit1.text='' showmessage('请输入你的新密码!!')
       else if edit2.Text <> edit1.Text then begin
         showmessage('请重新输入您的确认码');
         edit2.SetFocus;
       end else begin
         adoquery1.close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.sql.add('update admin set password = :#password' );
         ADOQuery1.Parameters.ParamByName('#password').Value := edit1.text;
         ADOQuery1.execsql;
       end;
    end;
      

  9.   

    你的代码也太乱了
    更改密码无非就是更新数据库
    应该是你的sql语句的问题
    该说的楼上都说了
    再搞不定
    再来问吧
      

  10.   

    wudi_1982(︻┳═一)
    的回答已经比较详细了
      

  11.   

    var
      Ausername :string;   adoquery1.close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.sql.add('update admin set password = :password where   username=:username' );
         ADOQuery1.Parameters.ParamByName('password').Value := edit1.text;
         ADOQuery1.Parameters.ParamByName('username').Value := Ausername;
        //最好加一条更新语句 
    ADOQuery1.execsql;