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

标签 c# asp.net sql-server-2008

我正在使用 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 检索它。

关于c# - 不使用第二个查询返回最后插入的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299098/

相关文章:

c# - 根据数组元素替换字符串

c# - 在多个 C# 类之间共享属性

asp.net - 学习MVC 5,这几天用什么认证框架?

sql-server-2008 - 是否有像 @@ServerName 这样的变量,但用于数据库名称?

c# - 在方法中更改文本框颜色

c# - 为什么这个 foreach 循环不抛出 "collection was modified"异常?

asp.net - ASP.net 验证控件如何工作?

c# - 从三个表中检索数据

java.sql.SQLException : Cannot create PoolableConnectionFactory, 连接被拒绝 SQL Server

sql-server - 更新 XML 列中的子字符串 SQL Server 2008