可以用 ascII 码直接写 SQL语句 引号的写法应该是 chr(39)+add+chr(39) -> 'add'

解决方案 »

  1.   

    用ParamByName('Name').AsString := dname;
    with ADOquery1 DO
          BEGIN
              CLOSE;
              SQL.CLEAR; 
              SQL.ADD('UPDATE table1 set Name=:Name');
              ParamByName('Name').AsString := dname;
              exesql;
        end;
      

  2.   

    with ADOquery1 DO
      BEGIN
        CLOSE;
        SQL.CLEAR; 
        SQL.ADD('UPDATE table1 set Name='+QuotedStr(dname)+')';
        exesql;
    end;QuotedStr是SysUitls里面声明的一个函数。输入一个string,输出一个两边用“'”括起的string,同时还会自动将字符串里面出现的单个“'”替换成“''”,很好用的。我用这个函数写SQL,从来没有遇到过类似于你的错误。
      

  3.   

    用ParamByName('Name').AsString := dname;
    with ADOquery1 DO
          BEGIN
              CLOSE;
              SQL.CLEAR; 
              SQL.ADD('UPDATE table1 set Name=:Name');
              ParamByName('Name').AsString := dname;
              exesql;
        end;
    这种方法比较安全
      

  4.   

    把SQL.ADD('UPDATE table1 set Name='''+dname+''');
    改成
    SQL.ADD('UPDATE table1 set Name='''+dname+'''');
    就没错了。
      

  5.   

    ChipHead(ChipHead)是我需要的解决方案,谢谢
      

  6.   

    用思雨王子的方法较好!
    不过好象是adoquery.parambyname('name').value=dname;
    直接用.asstring=dname好象编译通不过!