用ParamByName('Name').AsString := dname; with ADOquery1 DO BEGIN CLOSE; SQL.CLEAR; SQL.ADD('UPDATE table1 set Name=:Name'); ParamByName('Name').AsString := dname; exesql; end;
with ADOquery1 DO BEGIN CLOSE; SQL.CLEAR; SQL.ADD('UPDATE table1 set Name='+QuotedStr(dname)+')'; exesql; end;QuotedStr是SysUitls里面声明的一个函数。输入一个string,输出一个两边用“'”括起的string,同时还会自动将字符串里面出现的单个“'”替换成“''”,很好用的。我用这个函数写SQL,从来没有遇到过类似于你的错误。
用ParamByName('Name').AsString := dname; with ADOquery1 DO BEGIN CLOSE; SQL.CLEAR; SQL.ADD('UPDATE table1 set Name=:Name'); ParamByName('Name').AsString := dname; exesql; end; 这种方法比较安全
把SQL.ADD('UPDATE table1 set Name='''+dname+'''); 改成 SQL.ADD('UPDATE table1 set Name='''+dname+''''); 就没错了。
with ADOquery1 DO
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('UPDATE table1 set Name=:Name');
ParamByName('Name').AsString := dname;
exesql;
end;
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('UPDATE table1 set Name='+QuotedStr(dname)+')';
exesql;
end;QuotedStr是SysUitls里面声明的一个函数。输入一个string,输出一个两边用“'”括起的string,同时还会自动将字符串里面出现的单个“'”替换成“''”,很好用的。我用这个函数写SQL,从来没有遇到过类似于你的错误。
with ADOquery1 DO
BEGIN
CLOSE;
SQL.CLEAR;
SQL.ADD('UPDATE table1 set Name=:Name');
ParamByName('Name').AsString := dname;
exesql;
end;
这种方法比较安全
改成
SQL.ADD('UPDATE table1 set Name='''+dname+'''');
就没错了。
不过好象是adoquery.parambyname('name').value=dname;
直接用.asstring=dname好象编译通不过!