请看如下代码:
                       begin
                       try
                        strsql:='update adminuser set  password=''aaa''  where username=''管理员''';
                        Query_Login.SQL.Clear;
                        Query_Login.SQL.Add(strsql);
                        Query_Login.ExecSQL;
                        MessageBox(handle,'密码已经成功修改!','提示',MB_ICONEXCLAMATION);
                        except
                        MessageBox(handle,'密码修改失败!','提示',MB_ICONEXCLAMATION);
                        end                        end提示"project gps.exe raised exception class EOleException with message 'update 语句的语法错误。',process stopped.use step or run to continue"可是这个语句根据就没有错误。。各位朋友指点一下,哪里可能会出错呢?

解决方案 »

  1.   

    strsql:='update adminuser set  password='+''''+'aaa'+''''+'  where username='+''''+'管理员'+'''';
      

  2.   

    你在Query_Login.SQL.Add(strsql);这里中断一下,看看strsql的值,你会发现错误的
      

  3.   

    strsql:='update adminuser set  password='+''''+'aaa'+''''+'  where username='+''''+'管理员'+'''';
      

  4.   

    很抱歉。。倒扣小熊50分同样的错误提示:(to  罗云:看过了strsql的值肯定是没有错的。真的很奇怪!
      

  5.   

    strsql:='update adminuser set  password=''aaa''  where username=''管理员''';strsql:='update adminuser set  password='+''''+'aaa'+''''+'  where username='+''''+'管理员'+'''';strsql:='update adminuser set  password='+''''+'aaa'+''''+'  where username='+''''+'管理员'+'''';这几句有什么区别?你用的什么数据库?看看是不是表名 adminuser 跟数据库系统有冲突?
      

  6.   

    我用的是access。好的。。我试一下吧。
      

  7.   

    你们说奇怪不奇怪。。我把strsql改变为如下竟然就对了。。一下子排除了好几个我原来想像的错误:strsql:='select  password from userpass where username=''管理员''';看来问题就出在strsql这一行上。。但是!!!但是!!!我又确定我写的那一句200%没错。。真奇怪!!!!!!
      

  8.   

    :) 你不会是在执行时把access数据库开着吧! 呵呵!
      

  9.   

    IwantFlay(她说我是一个小孩!) 。。你真聪明。。确实,如果打开时确定会出错。。但我你更聪明!!!我把它给关闭了。
      

  10.   

    strsql:='update adminuser set  password='+Quotedstr(aaa)
             +'  where username='+QuotedStr('管理员');
      

  11.   

    var
       pwd,tuser:string;
    pwd:='aaa';
    tuser:='管理员';
    strsql:='update adminuser set  password='''+ pwd +'''  where username='''+ tuser +'''';
      

  12.   

    strsql:='update userpass set  password=''aaa''  where username=''管理员''';
    表名称错了
      

  13.   

    在Query_Login.ExecSQL前加Query_Login.Edit看看;
      

  14.   

    呵呵,我试了一下你的程序,我使用的是DELPHI+SQLSERVER,你的语句执行是没有问题的,但是在ACCESS中,就有问题了,问题和你的一样,我试着将EXECUTEOPTIONS的属性中的第一个属性变为TRUE的时候错误的信息就不同了,还有不知道你看了没有TADOQuery.SQL的帮助最后的NOTE的内容,大意是:DELPHI不会对通过ADO控件传给数据库的SQL进行求值,对ADO使用的用来访问特定的数据库的SQL必须是有效的。返回系统的任何错误,都是在活动数据对象(ADO)和数据库(DATABASE)这一级产生的。因此系统也就有了错误的代码和消息。我的英语水平不是很好,只能到这个程度了,具体的我再想想,希望能对你有些帮助!!我们可以一起交流交流,问题解决了发个短消息给我!!!谢谢!!!:)!
      

  15.   

    strsql:='update adminuser set  password=:pass  where username=:user;
     Query_Login.SQL.Clear;
     Query_Login.SQL.Add(strsql);
     Query_Login.parameters.parambyname('pass').value:='aaa';
     Query_Login.parameters.parambyname('user').value:='管理员';
     Query_Login.ExecSQL;