最近一直在使用Access2007作为数据库开发小项目。
一个小问题:向Access数据表插入一条语句后,如何再次获取它自增列的值?
方法:
1.insert into Table1后执行最大值查询
select max(Id ) from Table12.insert into Table1后执行select @@identity
int Id = Convert.ToInt32(dbAccess.GetExecuteScalar(@"select @@identity ", CommandType.Text));
(现在发现这种方法获取的ID出现了偏差)求其他解决方法?

解决方案 »

  1.   

    select @@identity  和Insert语句放到一起执行
      

  2.   

    我试过Access不能两条语句一块执行!
    insert into Table1(字段) values(字段);select @@identity 
    执行不出来!
      

  3.   

    按照事务批量执行
    select @@identity好像是获取游标当前指向的id,最好使用select MAX
      

  4.   

    最准确的办法是这样:
    在表里面增加一个字段Tmp在插入之前,生成一个表示
    String g = Guid.NewGuid().ToString();
    insert into Table1(xxxx,Tmp) values(xxxx,g)然后
    select id from Table1 Where TMp= g这样保证多人同时操作时使用Max出现的误差
      

  5.   

     不对的 @@identity 是查询最后一次插入的标识值   应该把 @@identity 放在对数据库语句的后面一起执行
      

  6.   

    7#的(【孟子E章】) 办法不错可以采用。保证多人操作不出现差错。
    如果单个用户Max也是可取的。
    至于Insert语句后跟@@identity这样方式在Access不好使,但SqlServer或MySql下可以执行。