c# – 返回最后插入的ID,而不使用第二个查询

我正在使用sql Server 2008的ASP.NET项目(C#).

当我在数据库中的表中插入一行时,我想获取最后插入的ID,这是表的IDENTITY(自动递增).

我不想使用其他查询,并且做一些像…

SELECT MAX(ID) FROM USERS;

因为 – 即使只有一个查询 – 它感觉很跛脚…

当我插入某些东西时,我通常使用ExecuteNonQuery(),它返回受影响的行数.

int y = Command.ExecuteNonQuery();

没有方法返回最后插入的ID而不使用另一个查询

解决方法

大多数人通过以下方式做到这一点:
INSERT dbo.Users(Username)
VALUES('my new name');

SELECT NewID = ScopE_IDENTITY();

(或者,而不是一个查询,将其分配给一个变量.)

所以它不是真的两个查询表

但是还有以下几种方法

INSERT dbo.Users(Username)
OUTPUT inserted.ID
VALUES('my new name');

尽管如此,您将无法使用ExecuteNonQuery来检索.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...