query1.sql.add('update animals set weight=20 where name=boa');这样写为什么不行呢?

解决方案 »

  1.   

    虽然不知道你的问题出在哪 我还是说说
    query1.close;
    query1.sql.clear;
    query1.sql.add('update animals set weight=20 where name=boa');
    query1.execsql;
    另外如过name 是字符的 那么
    query1.sql.add('update animals set weight=20 where name="boa"');
      

  2.   

    你把问题的CONTEXT说清楚啊比如你的name字段是什么类型的,我猜是字符串类型的吧。
    你该将条件语句中的字符串常量用引号括起来的,比如
    你要构造的更新语句为
    update animals set weight=20 where name='boa';
    那么我们必须改成
    query1.sql.add('update animals set weight=20 where name='+''''+'boa'+'''');//delphi中要得到‘''的字符串,
    必须这样写''''.
    你可以试试。
      

  3.   

    大家好呀!可以编译过!可是数据没有修改呀!!!!这是为什么呢?我用的query1连接的是delphi自带的那个表DBDEMOS下面的animals表呀!为什么编译过了。数据没有得到修改呢?
      

  4.   

    是你的sql语句中的where条件没有得到匹配呀,所以就没有改变了。name字段应该是一个字符串的吧,找楼上几位的建议改改看。
      

  5.   

    我真的按楼上的朋友说了,改了,为什么就是不行呀?很着急。代码如下:
    with query1 do
    begin
    close;
    sql.Clear;
    sql.Add('update animals set weight=58 where name='+''''+'boa'+'''');
    execsql;
    改成这两句也不行~~
    sql.Add('update animals set weight=58 where name="boa"');
    sql.Add('update animals set weight=58 where name='boa'');
      

  6.   

    是这样的:
    sql.Add('update animals set weight=58 where name=''boa''');
    boa两边都是但引号,绝对可以的