ASP.net如何得到SCOPE_IDENTITY()?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.net如何得到SCOPE_IDENTITY()?相关的知识,希望对你有一定的参考价值。

如题,别从网上抄,网上的我找了不知道怎么用.
不用存储过程就不行吗?

修改一下,这个才是对的:

1,首先定义一个插入数据的存储过程,示例如下:

CREATE PROCEDURE [dbo].[usp_InsertTool]
@T_Name nvarchar(50),
@T_CurrentPrice money,
@T_TypeID smallint,
@T_CreateTime smalldatetime,
@T_Description nvarchar(500),
@T_ID int OUTPUT
AS
--SET NOCOUNT ON
INSERT INTO [dbo].[NA.Tool] (
[T_Name],
[T_CurrentPrice],
[T_TypeID],
[T_CreateTime],
[T_Description],
[T_SoldCount]
) VALUES (
@T_Name,
@T_CurrentPrice,
@T_TypeID,
@T_CreateTime,
@T_Description
)
--SET @T_ID = SCOPE_IDENTITY()
SELECT SCOPE_IDENTITY()
GO
这样当你调用这个存储过程的时候存储过程在执行完成以后就会输出@T_ID,而@T_ID的值就是SCOPE_IDENTITY()
2,然后就是asp.net的获取了,定义一个ADD方法,示例如下:
public int Add(Tool entity)

if (entity == null)
return 0;
int result = 0;
object[] sqlParams = new object[]
entity.Name,
entity.CurrentPrice,
entity.TypeID,
entity.CreateTime,
entity.Description,
;
result = int.Parse(SqlHelper.ExecuteScalar(this.Conn, "usp_InsertTool", sqlParams).ToString());
this.CloseConnection();
return result;

这里面的result也就是返回结果就是SCOPE_IDENTITY()的值了,这里面用到的SqlHelper.ExecuteScalar就是调用存储过程并返回存储过程的output参数,是个网上的公用模板,你应该有吧?如同jQuery的
参考技术A SCOPE_IDENTITY(),你要用来做什么?直接用
用SQLCommond 就可以,如果是添加操作直接在远sql语句上面加 ";go select SCOPE_IDENTITY();",返回的DataTable 就是刚插入的数据ID本回答被提问者采纳
参考技术B 1,首先定义一个插入数据的存储过程,示例如下:

CREATE PROCEDURE [dbo].[usp_InsertTool]
@T_Name nvarchar(50),
@T_CurrentPrice money,
@T_TypeID smallint,
@T_CreateTime smalldatetime,
@T_Description nvarchar(500),
@T_ID int OUTPUT
AS
--SET NOCOUNT ON
INSERT INTO [dbo].[NA.Tool] (
[T_Name],
[T_CurrentPrice],
[T_TypeID],
[T_CreateTime],
[T_Description],
[T_SoldCount]
) VALUES (
@T_Name,
@T_CurrentPrice,
@T_TypeID,
@T_CreateTime,
@T_Description
)
--SET @T_ID = SCOPE_IDENTITY()
SELECT SCOPE_IDENTITY()
GO
这样当你调用这个存储过程的时候存储过程在执行完成以后就会输出@T_ID,而@T_ID的值就是SCOPE_IDENTITY()
2,然后就是asp.net的获取了,定义一个ADD方法,示例如下:
public int Add(Tool entity)

if (entity == null)
return 0;
int result = 0;
object[] sqlParams = new object[]
entity.Name,
entity.CurrentPrice,
entity.TypeID,
entity.CreateTime,
entity.Description,
;
result = int.Parse(SqlHelper.ExecuteScalar(this.Conn, "usp_InsertTool", sqlParams).ToString());
this.CloseConnection();
return result;

这里面的result也就是返回结果就是SCOPE_IDENTITY()的值了,这里面用到的SqlHelper.ExecuteScalar就是调用存储过程并返回存储过程的output参数,是个网上的公用模板,你应该有吧?如同jQuery的
参考技术C (insert.....)
updateCnt = sqlCmd.ExecuteNonQuery();
//上面先执行你的insert语句,成功之后再使用下面的取得你最新插入的标识
if (updateCnt == 1)

sqlCmdString = "Select SCOPE_IDENTITY()";
sqlCmd = new SqlCommand( sqlCmdString, sqlConn );
SqlDataReader dr = sqlCmd.ExecuteReader();
if (dr.Read())

string retKey = dr.GetValue(0).ToString();

dr.Close();
参考技术D 不懂

以上是关于ASP.net如何得到SCOPE_IDENTITY()?的主要内容,如果未能解决你的问题,请参考以下文章

如何得到SqlServer的自增ID

asp.net mvc 已知文件名,如何得到该文件的绝对路径。在线急等

SCOPE_IDENTITY()和 SELECT @@IDENTITY 的用法

使用 scope_identity 多插入如何?

如何绕过 ASP.NET 中按钮的验证?

如何在 ASP.Net 中的 asp:Button 中放置 Bootstrap Glyphicon?