我想在Delphi的SQL中插入一个新的学生的信息,如下:
with   Query3   do
  begin
      Close;
      SQL.Clear;
      SQL.ADD('insert   into   学生(学号,学生姓名,所属系名,学生年龄) values   (:Field1,:Field2,:Field3,:Field4)');
      ParambyName('Field1').asstring:=Trim(Edit2.Text);
      ParamByName('Field2').AsString:=Trim(Edit3.Text);
      ParamByName('Field3').AsString:=Trim(Edit4.Text);
      ParamByName('Field4').asstring:=Trim(Edit5.Text);
      ExecSql;
         end;
我执行了一下,老是出现错误:invalid use of keyword 
Token: values
到底是为什么啊?我查网上一些人他们插入也是用同样的方法的,都说可以。..

解决方案 »

  1.   

    insert       into       学生(学号,学生姓名,所属系名,学生年龄)   values       ('1','2','3','4')
    将上面的语句放到查询分析器中执行下,看是否有错误?
      

  2.   

    with       adoQuery3       do 
        begin 
                Close; 
                SQL.Clear; 
                SQL.ADD('insert into  学生(学号,学生姓名,所属系名,学生年龄) values(:Field1,:Field2,:Field3,:Field4)'); 
                ParambyName('Field1').asstring:=Trim(Edit2.Text); 
                ParamByName('Field2').AsString:=Trim(Edit3.Text); 
                ParamByName('Field3').AsString:=Trim(Edit4.Text); 
                ParamByName('Field4').asstring:=Trim(Edit5.Text); 
                ExecSql; 
                      end; 
      

  3.   

    无效使用关键字标示符value。看一下,是不是由于换行原因造成的vaulue最好在SQL.ADD('insert into...vaules....)一行上或者加#39       
      

  4.   

    我放到查询分析器里看了下。insert   into   学生(学号,学生姓名,所属系名,学生年龄) values   ('1','2','3','4') ; 
    之后还是显示:
    invalid   use   of   keyword   
    Token:   values 
    这样看来应该是本来的查询语句就出问题了.
      

  5.   

     SQL.ADD('insert       into       学生(学号,学生姓名,所属系名,学生年龄)   values       (''1'',''1'',''1'',''1'')'); //ok
      

  6.   

    试了下楼上的说法,还是不行..这个插入是不是和原来“学生”这个DB文件中学号,学生姓名,所属系名,学生年龄的属性有关系的?
    我定义的学号,学生姓名,所属系名都是alpha,所属系名是短整型。
      

  7.   

    跟哪个没有关系,SQL语句都需要处理为《字符类型》
    ----------------------
    SQL.ADD('insert into  学生(学号,学生姓名,所属系名,学生年龄)  values      ('''+Edit1.text+''',******* )');   //ok
      

  8.   

    还是不行,不过先谢谢了 . 我觉得问题存在
    insert   into     学生(学号,学生姓名,所属系名,学生年龄)     values   (…… )里面,因为在查询分析器里面也会出错。  
    至于  values             ('''+Edit1.text+''',*******   )');    
    还是values(:Field1,:Field2,:Field3,:Field4)');   
       ParambyName('Field1').asstring:=Trim(Edit2.Text);   
       ParamByName('Field2').AsString:=Trim(Edit3.Text);   
       ParamByName('Field3').AsString:=Trim(Edit4.Text);   
       ParamByName('Field4').asstring:=Trim(Edit5.Text);  
    我觉得只是写法不同而已,应该没什么区别的吧. 
         
      

  9.   

    insert into 学生(学号,学生姓名,所属系名,学生年龄)values (……   )里面,因为在查询分析器里面也会出错。
    -------------------------晕,这个都会错,怎么可能
    1:查询分析器里面
        insert into 学生(学号,学生姓名,所属系名,学生年龄)values ('1','1','1','1' );//标准写法
    2:delphi里面
       AdoQuery1.***
       AdoQuery1.SQL.ADD('insertinto 学生(学号,学生姓名,所属系名,学生年龄)values ('''+Edit1.text+''',''1'',''1'',''1''  )');  //标准写法
      AdoQuery1.****
    --如果你真的能理解我的写法,我保证没有错误,