Access 返回自增列的值

长腿爸爸 2009-12-17 04:45:53
最近一直在使用Access2007作为数据库开发小项目。
一个小问题:向Access数据表插入一条语句后,如何再次获取它自增列的值?
方法:
1.insert into Table1后执行最大值查询
select max(Id ) from Table1

2.insert into Table1后执行select @@identity
int Id = Convert.ToInt32(dbAccess.GetExecuteScalar(@"select @@identity ", CommandType.Text));
(现在发现这种方法获取的ID出现了偏差)

求其他解决方法?
...全文
338 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdx808 2010-05-14
  • 打赏
  • 举报
回复
学习了
jared0203 2010-05-14
  • 打赏
  • 举报
回复
dddddddddd
长腿爸爸 2009-12-18
  • 打赏
  • 举报
回复
7#的(【孟子E章】) 办法不错可以采用。保证多人操作不出现差错。
如果单个用户Max也是可取的。
至于Insert语句后跟@@identity这样方式在Access不好使,但SqlServer或MySql下可以执行。
j432432432432432 2009-12-17
  • 打赏
  • 举报
回复
不对的 @@identity 是查询最后一次插入的标识值 应该把 @@identity 放在对数据库语句的后面一起执行
j432432432432432 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]
select @@identity  和Insert语句放到一起执行
[/Quote]

对就用这个函数就可以
孟子E章 2009-12-17
  • 打赏
  • 举报
回复
最准确的办法是这样:
在表里面增加一个字段Tmp

在插入之前,生成一个表示
String g = Guid.NewGuid().ToString();
insert into Table1(xxxx,Tmp) values(xxxx,g)

然后
select id from Table1 Where TMp= g

这样保证多人同时操作时使用Max出现的误差
yyt_yang 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jaylianyu 的回复:]
我试过Access不能两条语句一块执行!
insert into Table1(字段) values(字段);select @@identity
执行不出来!
[/Quote]
按照事务批量执行
select @@identity好像是获取游标当前指向的id,最好使用select MAX
特别 2009-12-17
  • 打赏
  • 举报
回复
貌似这样的,分两次执行
[Quote=引用 4 楼 jaylianyu 的回复:]
我试过Access不能两条语句一块执行!
insert into Table1(字段) values(字段);select @@identity
执行不出来!
[/Quote]
长腿爸爸 2009-12-17
  • 打赏
  • 举报
回复
我试过Access不能两条语句一块执行!
insert into Table1(字段) values(字段);select @@identity
执行不出来!
lazyboysqaz 2009-12-17
  • 打赏
  • 举报
回复
那就用MAX
zgke 2009-12-17
  • 打赏
  • 举报
回复
select @@identity 和Insert语句放到一起执行

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧