我写了一个类(无窗体),里面有一个TADOQuery的对象Sql,其中有一个
Function DataOper(Condition:String)
begin
with ADOQuery1 do
begin
   Sql.SQL.Clear;
   Sql.sql.Add(Condtion);
   Sql.ExecSQL;
end;
end;
注:Condition的值是从前台传入的,Access数据库username表只有两个字段User_Name,PassWord
EdtUserNameA.Text:='li';
EdtUserNameA.Text:='lp';
如果:Condition:='Insert into username values("'+ EdtUserNameA.Text +'","'+ MEdtKeyA.Text +'")'; 
-----------------------可通过
如果:Condition:='Insert into username(User_Name) values("'+ EdtUserNameA.Text +'")'; 
-----------------------可通过
如果:Condition:='Insert into username(User_Name,PassWord) values("'+ EdtUserNameA.Text +'","'+ MEdtKeyA.Text +'")'; 
-----------------------不可通过,说是Insert语法错误
为什么?????????????????????????????
请各位大哥告诉小弟,昨天我已经快疯了,我用的是Delphi7,还有请给出Delete,Update的语句。(千万不要让我查帮助,我已经找了很久了)。
拜托,千万给我可执行的代码。我求你了。可通过一定给分。请区分"和'.

解决方案 »

  1.   

    Condition:='Insert into username(User_Name,[PassWord]) values("'+ 
    .                                          ~~~~~~~~~~~
    EdtUserNameA.Text +'","'+ MEdtKeyA.Text +'")'; 
    类似No, ID, Password 这些都是很多数据库的关键字,你要回避,如果用最好加上前缀,比如 f_password,
      

  2.   

    Sql Server 2000 吗 ? 应该不会呀
      

  3.   

    应该不识字段名的问题,如果用 Sql Server 2000 ;(当然屏蔽掉关键字最好)----------------------------------------------------
    Function DataOper(Condition:String) : Boolean ;
    begin
    with ADOQuery1 do
    begin
       Close ;
       Sql.Text := Condition ;
       Try
         ExecSql ;
       Except 
         Result := False ;
       End ;
       Result := True ;
    end;
    end;Condition := 'insert into username(User_Name,Password) Values(''' + EdtUserNameA.Text + ''',''' + EdtKeyA.Text + ''')' ;应该没错