procedure TForm1.BitBtn1Click(Sender: TObject);
var sql:string;
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  //adoquery1.SQL.Add('insert into users (text1,userid) values('ss','03')');
  //adoquery1.SQL.Add('insert into users (text1, userid) values("'+1+'","'+100+'")');
  sql:= 'insert into users(text1,userid) values ("'+edit1.Text+'","'+edit2.Text+'")';
  adoquery1.SQL.Add(sql);
  adoquery1.ExecSql;end;
其中USERS表就2个字段text1和userid都是char出现错误是
“在此上下文中不允许使用'edit1'.此处只允许使用常量,变量,表达式。不允许使用列名”
错误提示中的edit1是我的edit控件上的text怎么会这样,语句中哪里有错误阿?

解决方案 »

  1.   

    sql:= 'insert into users(text1,userid) values ('''+edit1.Text+''','''+edit2.Text+''')';
      

  2.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  3.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var sql:string;
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      sql:= 'insert into users(text1,userid) values ('+ QuotedStr(Edit1.Text) + ','+ QuotedStr(edit2.Text) +')';
      adoquery1.SQL.Add(sql);
      adoquery1.ExecSql;end;
      

  4.   

    sql:= 'insert into users(text1,userid) values ('''+edit1.Text+''','''+edit2.Text+''')';users(text1,userid)的text1不是一个字段吧,
    或许是users(text1,usrid)中的text1与values('''+edit1.Text+'''....)中的text1冲突
      

  5.   

    引号错了吧。sql:= 'insert into users(text1,userid) values (';
    sql:=sql+‘'''+edit1.Text+‘''';
    sql:=sqll+','+''''+edit2.Text+''''+')';
      

  6.   

    delphi的引号好多啊,有没有老师知道下,引号怎么那么多啊
      

  7.   

    把双引号改成两个单引号就可以了。
    sql:= 'insert into users(text1,userid) values ('''+edit1.Text+''','''+edit2.Text+''')';
      

  8.   

    delphi中的单引号用两个单引号表示
      

  9.   

    在delphi中单引号作为转义字符处理,两个单引号就表示一人引号。
      

  10.   

    这种插入方式好象不太安全吧,我也试过的,如果在edit1.Text输入里面有单引号的话会出错的。不过好象用这种方式的挺多的,是不是速度快啊?
      

  11.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var sql:string;
    begin
      adoquery1.Close;
      adoquery1.sql:='insert into users(text1,userid) values('+quotedstr(edit1.Text)+','+quotedstr(edit2.Text)+')';
      adoquery1.ExecSql;
    end;
      

  12.   

    建议大家多多使用Parameters,上述方法如果出现'或者*之类的SQL敏感符号则会出错!