总是跳出update语法错误,我实在找不出来了,求各位大侠看一下
--------------------------------------------------------------------------------------------------
with FormLogin.ADOQuery1  do
  begin
   close;
   sql.Clear;
   sql.Add('select * from b1 where username=:username and password=:password');
   Parameters[0].Value := trim(EditUsr.Text);
   Parameters[1].Value := trim(EditPwd.Text);
   open;
   if isempty then
    begin
     showmessage('请核对您的用户名和密码信息!');
    end
   else
    begin
     close;
     sql.Clear;
     sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+'''where username ='''+trim(EditUsr.Text)+'''';
     sql.Text:=sqlstr;
     Open;
     ShowMessage('密码修改成功!');
    end;
  end;

解决方案 »

  1.   

    sql.Add('select * from b1 where username=:username and password=:password' );
    password后面加个空格试试
    再就是有可能password关键字的原因,不过记不住究竟是password还是Password是关键字了,改成passwords试试 
      

  2.   

    sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+'''where username ='''+trim(EditUsr.Text)+'''';
    sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+''' where username ='''+trim(EditUsr.Text)+'''';
      

  3.   

    update ,insert 语句就不要用 Open了 有 ExecSQL
      

  4.   

    update 语句不是用 open,是execsql...
         sql.Text:=sqlstr; 
         execsql; 
         ShowMessage('密码修改成功!'); 
        end; 
    ...
      

  5.   

    sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+''' where username ='''+trim(EditUsr.Text)+ ''''; 
    sql.Text:=sqlstr;  
    先把下面的语句"execsql;"注释掉,然后加一个memo控件,并增加语句:memo1.lines.add(sqlstr);
    //execsql;  
    ShowMessage('密码修改成功!');  
    end;  执行后看memo中的内容,并复制到你sql server中验证即可查明原因.
      

  6.   

    单步跟踪试一下看哪里出错了,把SQL截出来看看。
      

  7.   

     with FormLogin.ADOQuery1  do 
      begin 
       close; 
       sql.Clear; 
       sql.Add('select * from b1 where username=:username and password=:password'); 
       Parameters[0].Value := trim(EditUsr.Text); 
       Parameters[1].Value := trim(EditPwd.Text); 
       open; 
       if isempty then 
        begin 
         showmessage('请核对您的用户名和密码信息!'); 
        end 
       else 
        begin 
         close; 
         sql.Clear; 
         sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+'''where username ='''+trim(EditUsr.Text)+''''; 
         sql.Text:=sqlstr; 
         Open; //这里错拉 用execsql  
         ShowMessage('密码修改成功!'); 
        end; 
      end;
      

  8.   

    with FormLogin.ADOQuery1  do 
      begin 
       close; 
       sql.Clear; 
       sql.Add('select * from b1 where username=:username and password=:password'); 
       Parameters[0].Value := trim(EditUsr.Text); 
       Parameters[1].Value := trim(EditPwd.Text); 
       open; 
       if isempty then 
        begin 
         showmessage('请核对您的用户名和密码信息!'); 
        end 
       else 
        begin 
         close; 
         sql.Clear; 
         sqlstr:='update b1 set password ='''+trim(EditSPwd.Text)+'''where username ='''+trim(EditUsr.Text)+''''; 
         sql.Text:=sqlstr; 
         execsql
         ShowMessage('密码修改成功!'); 
        end; 
      end;
      

  9.   

    试一试这样:
    sql.Text := Format('update [b1] set [password]="%s" where [username]="%s"',[EditPsw.Text, EditUser.Text]);
    sql.ExecSql;另外,记得检查输入,如果EditPsw.Text和EditUser.Text中有"等字符时也不行!!!
      

  10.   

    with FormLogin.ADOQuery1  do 
      begin 
       close; 
       sql.Clear; 
       sql.Add('select * from b1 where username=:username and password=:password'); 
       Parameters[0].Value := trim(EditUsr.Text); 
       Parameters[1].Value := trim(EditPwd.Text); 
       open; 
       if isempty then 
        begin 
         showmessage('请核对您的用户名和密码信息!'); 
        end 
       else 
        begin 
         close; 
         sql.Clear; 
         sqlstr:='update b1 set [password] ='''+trim(EditSPwd.Text)+'''where [username] ='''+trim(EditUsr.Text)+''''; 
         sql.Text:=sqlstr; 
         ExecSql; 
         ShowMessage('密码修改成功!'); 
        end; 
      end;
      

  11.   

    用TADOQuery操作SQL语句的时候要记住如下特点:如果SQL语句是查询语句(SELECT语句)则用TADOQuery.Open,如果是非查询语句则用TADOQuery.ExecSQL
      

  12.   

    是不是前面 没有param.clear!
      

  13.   

    感谢xiaocha和wendream,终于成功了,只是还想问一下为什么要这么写:[password],[username]
      

  14.   


    为什么要这么写:[password],[username]转义关键字?