连的是access数据库,提示update语法错误!!(我看不出哪儿错,把,改成and居然不报错,不过username的值总是0)
procedure TForm1.Button1Click(Sender: TObject);
begin
    with ADOQuery1 do
     begin
      adoquery1.close;
      adoquery1.sql.clear;
      adoquery1.sql.add('select * from logmember where username=');
      adoquery1.sql.add(''''+edit1.Text+''''+' and password=');
      adoquery1.sql.add(''''+edit2.Text+'''');
      adoquery1.open;
        if recordcount>=1 then
          begin
           if (edit3.Text<>'') and (edit4.Text <> '') then
              begin
               adoquery1.sql.clear;
               adoquery1.sql.add('update logmember set username=');
               adoquery1.sql.add(''''+trim(edit3.Text)+''''+',');
               adoquery1.sql.add('password='+''''+trim(edit4.Text)+'''');
               ADOQuery1.ExecSQL;
              end;
           end;
      end;
   end;
end.

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        with ADOQuery1 do
         begin
          adoquery1.close;
          adoquery1.sql.clear;
          adoquery1.sql.add('select * from logmember where username='''+edit1.Text+''' and password='''+edit2.Text+'''');
          adoquery1.open;
            if recordcount>=1 then
              begin
               if (edit3.Text<>'') and (edit4.Text <> '') then
                  begin
                   adoquery1.close;
                   adoquery1.sql.clear;
                   adoquery1.sql.add('update logmember set username='''+trim(edit3.Text)+''', password='''+trim(edit4.Text)+'''');
                   ADOQuery1.ExecSQL;
                  end;
               end;
          end;
       end;
    end.试试吧
      

  2.   

    应该是改成AND ,username 等于0 是因为adoquery1.sql.add('select * from logmember where username=');这句有问题   你在看一下!
      

  3.   

    提醒:
    adoquery1.sql.add('update logmember set username='''+trim(edit3.Text)+''', password='''+trim(edit4.Text)+'''');
    这可是把所有记录的内容都改了啊,你难道不是想改一条?另外,主要是‘’的问题,用好了就行了。
      

  4.   

    adoquery1.sql.clear;
                   adoquery1.sql.add('update logmember set username='+#39+trim(edit3.Text)+#39+'and password='+#39+trim(edit4.Text)+#39);
                   ADOQuery1.ExecSQL;
                  为了避免使用引号套引号,使用#39,表示引号,这样肯定没错
      

  5.   

    adoquery1.sql.add('select * from logmember where username=');
          adoquery1.sql.add(''''+edit1.Text+''''+' and password=');
          adoquery1.sql.add(''''+edit2.Text+'''');
    你的语句产生的sql语句是:
    select * from logmember where username=
    'user1' and password=
    'pass0'
    注:edit1.text := 'user1'; edit2.text := 'pass0';
    这样在'user1'前有一个换行符
               if (edit3.Text<>'') and (edit4.Text <> '') then
                  begin
    //在重新操作adoquery1前应该关闭close它
                   adoquery1.Close; //add
                   ......
                  end;
               end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        with ADOQuery1 do
         begin
          adoquery1.close;
          adoquery1.sql.clear;
          adoquery1.sql.add('select * from logmember where username=');
          adoquery1.sql.add(''''+edit1.Text+''' and password=');
          adoquery1.sql.add(''''+edit2.Text+'''');
          adoquery1.open;
            if recordcount>=1 then
              begin
               if (edit3.Text<>'') and (edit4.Text <> '') then
                  begin
                   adoquery1.sql.clear;
                   adoquery1.sql.add('update logmember set username=');
                   adoquery1.sql.add(''''+trim(edit3.Text)+''',');
                   adoquery1.sql.add('password='''+trim(edit4.Text)+'''');
                   ADOQuery1.ExecSQL;
                  end;
               end;
          end;
       end;
    end.
    主要原因是你的"'"號的太多了。