通过数据集插入数据,如何获得刚刚插入数据的自增主键?

vvqboy 2011-05-13 03:42:31
数据库定义:
create table T_Users
(
userID bigint identity(10000,1) primary key,--用户ID,主键,标识列,号码由系统从1000开始自动生成
……(省略)
)

通过数据集插入数据
T_UsersTableAdapter adapter = new T_UsersTableAdapter();
adapter.InsertQueryRegister(userName……);

如何获得刚刚插入的这个userName的值?
...全文
283 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vvqboy 的回复:]

引用 1 楼 zhangyunhebei 的回复:
userName在你插入之前就是已知的;

想获取可用:
string sql=@"
insert into userinfo values('UserName1',20);select username from userinfo where id=@@identity";
执行sql时,返回第一行第一列的值就行 一般我们要@@i……
[/Quote]
用原生的SQL。。。

vvqboy 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangxuan 的回复:]
推荐SELECT SCOPE_IDENTITY(),而非@@IDENTITY !
[/Quote]
您给的方法,和1楼给的方法,我在MS SQL 2005中都可以使用的,
但到了vs2008里自带的数据库中,怎么返回空值呀
vvqboy 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vvqboy 的回复:]
引用 1 楼 zhangyunhebei 的回复:
userName在你插入之前就是已知的;

想获取可用:
string sql=@"
insert into userinfo values('UserName1',20);select username from userinfo where id=@@identity";
执行sql时,返回第一行第一列的值就行 一般我们要@@id……
[/Quote]

您给的语句,我在MS SQL 2005中可以使用的,
但到了vs2008里自带的数据库中,怎么返回空值呀
vvqboy 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mockqi 的回复:]
insert into userinfo values('UserName1',20) SELECT @@IDENTITY

目测的~~~
[/Quote]
这条语句我在MS SQL 2005中可以使用的,
但到了vs2008里自带的数据库中,怎么返回空值呀
白云任去留 2011-05-13
  • 打赏
  • 举报
回复
推荐SELECT SCOPE_IDENTITY(),而非@@IDENTITY !
  • 打赏
  • 举报
回复
insert into userinfo values('UserName1',20) SELECT @@IDENTITY

目测的~~~
vvqboy 2011-05-13
  • 打赏
  • 举报
回复
发的帖子有点错误,更新下。注意,我要的是userId,不是userName。

数据库定义:

create table T_Users

( userID bigint identity(10000,1) primary key,--用户ID,主键,标识列,号码由系统从1000开始自动生成

userName……(省略)

)

通过数据集插入数据

T_UsersTableAdapter adapter = new T_UsersTableAdapter();

adapter.InsertQueryRegister(userName……);

如何获得刚刚插入的这个userID的值?因为自动生成,所以insert的时候是不需要输入的。
vvqboy 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhangyunhebei 的回复:]
userName在你插入之前就是已知的;

想获取可用:
string sql=@"
insert into userinfo values('UserName1',20);select username from userinfo where id=@@identity";
执行sql时,返回第一行第一列的值就行 一般我们要@@identity的情况多,因为插入之前是未知的。
[/Quote]

我是用vs2008创建了一个dataset文件,然后用视图拖拽的方法创建的T_UsersTableAdapter。
整个过程的sql语句都是自动生成的,这种情况,应该怎样使用select username from userinfo where id=@@identity";这条语句呢
lindping 2011-05-13
  • 打赏
  • 举报
回复
应该通过获取刚插入的数据的主键来获取username吧

string sql=@"
insert into userinfo values('UserName1',20) SELECT SCOPE_IDENTITY AS 'Identity'
";
  • 打赏
  • 举报
回复
userName在你插入之前就是已知的;

想获取可用:
string sql=@"
insert into userinfo values('UserName1',20);select username from userinfo where id=@@identity";
执行sql时,返回第一行第一列的值就行 一般我们要@@identity的情况多,因为插入之前是未知的。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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