下面的代码是用户修改密码的代码。谢谢了!!if Edit1.Text=username then
        begin
          if Edit2.text=Edit3.Text then
          begin
          adoQuery1:=TadoQuery.Create(self);
          adoQuery1.Connection:=adoConnection1;
          adoQuery1.SQL.Clear;
          adoQuery1.SQL.Add('update userlist set password=:password where userID=:username');
          adoQuery1.Parameters.Clear;
          adoQuery1.Parameters.AddParameter;
          adoQuery1.Parameters[0].Name:='password';
          adoQuery1.Parameters[0].DataType:=ftstring;
          adoQuery1.Parameters[0].Direction:=pdinput;
          adoQuery1.Parameters[0].Value:=Edit2.Text;
          adoQuery1.Parameters.AddParameter;
          adoQuery1.Parameters[1].Name:='username';
          adoQuery1.Parameters[1].DataType:=ftstring;
          adoQuery1.Parameters[1].Direction:=pdinput;
          adoQuery1.Parameters[1].Value:=pwd;
          adoquery1.ExecSQL;
          adoQuery1.Close;
          showmessage('sfsf');
          end
          else
          begin
          application.MessageBox('两次密码不一致!','提示信息',mb_ok);
          Edit2.SetFocus;          end;
        end
    else
        begin
          application.MessageBox('旧密码错,请重新输入!','提示信息',mb_ok);
          Edit1.SetFocus;
        end;

解决方案 »

  1.   

    你把
              adoQuery1.Parameters.AddParameter;
              adoQuery1.Parameters[0].Name:='password';
              adoQuery1.Parameters[0].DataType:=ftstring;
              adoQuery1.Parameters[0].Direction:=pdinput;
              adoQuery1.Parameters[0].Value:=Edit2.Text;
              adoQuery1.Parameters.AddParameter;
              adoQuery1.Parameters[1].Name:='username';
              adoQuery1.Parameters[1].DataType:=ftstring;
              adoQuery1.Parameters[1].Direction:=pdinput;
              adoQuery1.Parameters[1].Value:=pwd;
             改为adoQuery1.Parameters.Parameterbyname('password').value:=Edit2.Text;
                 adoQuery1.Parameters.Parameterbyname('username').value:=pwd;试试行不行,因为UPDATE语句看起来没问题。
      

  2.   

    是Parambyname。
    即adoQuery1.Parameters.Parambyname('username').value:=pwd;
      

  3.   

    SQL语句不对吧,=后要加:号吗???
      

  4.   

    //
              adoQuery1.SQL.Add('update userlist set password=:password where userID=:username');
              parameters.parambyname('password').value := pwd;//这样写看看,怎么会那么复杂
              //.....
              adoquery1.ExecSQL;
      

  5.   

    用得着那么复杂嘛          
    adoQuery1.SQL.Clear;
    adoQuery1.SQL.Add('update userlist set password='''+Edit2.Text+
                     ''' where userID='''+username+'''');
    adoquery1.ExecSQL;
      

  6.   

    adoQuery1.SQL.Add('update userlist set password=:password where userID=:username');
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    adoQuery1.SQL.Add('update userlist set [password]=:password where [userID]=:username');