注:除了传参数,还有没有其他方法?

解决方案 »

  1.   

    adoquery1.fieldbyname('**').value:=edit1.text
    sqlstr:=format('insert into holland values (''%s'')',[Edit1.Text])
    如果Edit1.text里面有引号的话,上面两个方法应该都可以
      

  2.   

    Query->SQL->Add("Select * from ss where ss="+IntToStr(name));
    name有时带有时不带‘'’
      

  3.   

    sql.text :=format('select * from t where name like ''%s'')',[Edit1.Text]);
    没有问题
      

  4.   

    sql.text :='select * from t where name like '''%+Edit1.Text+'%''';
      

  5.   

    Query->SQL->Add("Select * from ss where ss="+IntToStr(name));
    name有时带有时不带‘'’
    ------------------
    整形的name怎么会带'?如果name是字符串而不是Integer,这样就可以:Query->SQL->Add("Select * from ss where ss=''' + StringReplace(name, '''', '''''', [rfReplaceAll]) + ''''));抱歉引号很多,不过没办法,就是这样的。
      

  6.   

    呵呵,刚刚学到一招,这样就行:
    Query->SQL->Add("Select * from ss where ss=' + QuotedStr(name));
      

  7.   

    使用parameter是一种变量化查询的方法,但可能会涉及到一些深入的内容,而且,使用也不怎么方便,建议这样做,把sql语句事先整理成字符串,如果该变量为字符串,那么只需要使用quotedstr把它变成pascal形式的字符串格式,接在select * from .....后面即可,如果是数值型直接转换成字符串就可以了,例:
    var
    mysql:string;
    begin
    mysql:=edit1.text;
    mysql:='select * from xxx where yyy = '+mysql;
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add(mysql);
    adoquery1.open;
    end;
    这样是不是简单多了?