ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values('+ID+','''+name+''','''+sex+''','+department_ID+')')
说什么"string"和"integer"有问题,
再问下大家你在用向数据库里插数据的时候用什么方法啊

解决方案 »

  1.   

    类型问题吧  你再看看你SQL库里面的结构 是不是和变量的数据类型附合
      

  2.   

    首先你用的是变量传值,那么应该写成
    ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)
    values('''+inttostr(ID)+''','''+name+''','''+sex+''','''+inttostr(department_ID)+''')');
    这样应该可以存进去。你原来的写发肯定不对。那相当于把字符串+id+存进了字段peo_ID。
    应该按name那样的字符串拼串。
    我也是初学者。至于怎么拼数值变量的串我还没想到那!!
    把数值转成字符串应该可以存。我试过了!!!
      

  3.   

    iddepartment_id 
    是整形,就这样
    values('+inttostr(ID)+','''+name+''','''+sex+''','+inttostr(department_ID)+')')
      

  4.   

    字段类型不一致
    把那句
    'Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values('+ID+','''+name+''','''+sex+''','+department_ID+')'
    显示出来在数据库一执行就知道了
      

  5.   

    肯定是字段类型不一致,首先看 SQL 里面的类型,如果是整型的,就用一个引号,如果是字符串型得就用三个引号
      

  6.   

    要用动态参数来实现
    ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values(:ID+','''+name+''','''+sex+''',:department_ID+')')
    ADOQuery.parameters.parabyname('ID').value:=strtoint(ID);
    ADOQuery.parameters.parabyname('department_ID').value:=strtoint(department_ID);
    属性记不太准,拼写可能有误,
      

  7.   

    with adoquery do
    begin
      active:=false;
      sql.clear;
      sql.add(
       'Insert into people(peo_ID,peo_Name,peo_Sex,department_ID) '
      +'values(:id,:name,:sex,:depart_id) ');
     //1 数据库id为Integer且ID变量为Integer
      params.ParamByName('id').value :=ID;
     //1 数据库id为varchar2且ID变量为Integer
      params.ParamByName('id').value :=intToStr(ID);
      params.ParamByName('name').asString :=strToInt(ID);
      params.ParamByName('sex').asString :=strToInt(ID);
      params.ParamByName('depart_id').asInteger :=strToInt(ID);
      execSQL;
    end;
      

  8.   

    应该把insert into写在一行吧,不能换行
      

  9.   

    不太明白樓主的定義
    其實類似的情況,只要樓主看看你最後形成的SQL語句,就會知道問題出在什麼地方
      

  10.   

    首先,
    你写的是一个SQL语句,
    你的SQL中有几上你的Delphi中的变量,如果想能编译,至少这些变量应该是字符串,或你反它转换成字符串,
    建立使用参数来传递值,可以用于任何类型,而且不会出错。
    ADOQuery.SQL.Clear();
    ADOQuery.SQL.Add('INSERT INTO Table (Field1,Field2)VALUAS(:Field1,:Field2)');
    ADOQuery.Parameters.ParamByName('Field1').Value='a';
    ADOQuery.Parameters.ParamByName('Field2').Value=123;
    ADOQuery.ExecSQL;
      

  11.   

    字符类型没搞清楚啊!'Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)
    values('''+inttostr(ID)+''','''+name+''','''+sex+''','''+inttostr(department_ID)+''')'这样就没问题了!
      

  12.   

    最好的方法是使用参数,
    如yifei1900(逸飞)兄的代码,
    这种方式可以避免很多问题,如字符串中有特殊字符的情况。