连接字符串如下:
ConnectStr:=
        'Provider = MicroSoft.jet.OLEDB.4.0;'+
        'Persist Security Info = False;'+
        'Data Source='+path+'\BillData.mdb;'+
        'Mode = ReadWrite;'+
        'Jet OLEDB:Database Password=supergam;';
table1结构 如下:(使用access数据库)
id 自动增量
name 文本
bianma 文本
现在想插入一条纪录,我知道自动增量是自动添加的,所以我是这样写。
str:='insert into table1 values(''name'',''bianma'')'
但是说我插入的数据列不匹配,然后改成如下方法
str:='insert into table1(name,bianma) values(''name'',''bianma'')'
说我sql语法错,但是我这条命令能够在access中执行
搞了好久,找不出原因,高手帮忙看看。是不是还有其他地方没有注意,比如
连接字符串的问题,或者是adoquery的配置问题。
小弟第一次搞access数据库,实在没有其他办法,而且又很急!

解决方案 »

  1.   

    不要使用保留字作爲列名,name 是保留字
      

  2.   

    建议你分开两条语句,首先执行INSERT操作,让ACCESS自动生成编号后,把相应的值赋给两个字段。
      

  3.   

    name, 不要使用保留关键字
      

  4.   

    str:='insert into table1 values(''[name]'',''bianma'')'
      

  5.   

    str:='insert into table1(name,bianma) values(''`name`'',''`bianma`'')'注意Access里Name是关键字,需要用`这个符合引起来(即Tab上面的那个键)
      

  6.   

    我刚才试过了,如果将自动增量去掉,是可以插入的,好像也不是name 的问题。
      

  7.   

    不会吧!
    应该是
      str:='insert into table1([name],bianma) values(''name'',''`bianma`'')';
    不是
      str:='insert into table1(name,bianma) values(''`name`'',''`bianma`'')'
      或者
      str:='insert into table1(name,bianma) values(''[name]'',''`bianma`'')'
      

  8.   

    要不用参数试一试!另送惊喜:刚发现的免费在线电影站,只要注册一下就可以看!速度超快,清晰度高,最新大片竟然都有。没有病毒!放心打开看吧!网址:http://www.yes333.com/?r=wjh7811
      

  9.   

    试试这个,行了给分。哈
    with dm.qypub  do
      begin
        close;
        sql.clear;
        sql.Add('insert into table1 (name,bianma) values('+#39+'你'+#39+','+#39+'111111'+#39+')');
        ExecSQL;
      end;
      

  10.   

    sql好像沒問題,是否connectionstring的問題啊?靜態試一下