最近一直在使用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出现了偏差)求其他解决方法?
一个小问题:向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出现了偏差)求其他解决方法?
insert into Table1(字段) values(字段);select @@identity
执行不出来!
select @@identity好像是获取游标当前指向的id,最好使用select MAX
在表里面增加一个字段Tmp在插入之前,生成一个表示
String g = Guid.NewGuid().ToString();
insert into Table1(xxxx,Tmp) values(xxxx,g)然后
select id from Table1 Where TMp= g这样保证多人同时操作时使用Max出现的误差
如果单个用户Max也是可取的。
至于Insert语句后跟@@identity这样方式在Access不好使,但SqlServer或MySql下可以执行。