sqldatasource插入返回标识值

时间:2010-09-29 10:07:50

标签: .net insert return sqldatasource

我正在使用SqlDataSource sds = new SqlDataSource();在代码后面并使用sds.Insert()插入;请告诉我如何获取插入的记录主键值? 请注意我不使用存储过程。

2 个答案:

答案 0 :(得分:1)

LAST_INSERT_ID();

为您提供最后一个主键ID,您只需将其附加到当前插入的末尾,键值就会从插入中返回。

这是一个C#示例:

tring sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";
db.Open();
try
{
 SqlCommand cmdIns = new SqlCommand(sqlIns, db.Connection);
 cmdIns.Parameters.Add("@name", info);
 cmdIns.Parameters.Add("@information", info1);
 cmdIns.Parameters.Add("@other", info2);
 cmdIns.ExecuteNonQuery();

 cmdIns.Parameters.Clear();
 cmdIns.CommandText = "SELECT @@IDENTITY";


 // Get the last inserted id.

 int insertID = Convert.ToInt32( cmdIns.ExecuteScalar() );


 cmdIns.Dispose();
 cmdIns = null;
}
catch(Exception ex)
{
throw new Exception(ex.ToString(), ex);
}
finally
{
db.Close();
}

我在MSDN找到了这个:

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/91bd10ce-c83b-4766-920b-2137ddc29908

答案 1 :(得分:1)

我知道这是一个相当古老的帖子,但万一有人同时降落在这里......

关于Michael Eakins的回答(见上文),使用SCOPE_IDENTITY()而不是@@IDENTITY更安全。

每个MSDN SCOPE_IDENTITY

  

“... SCOPE_IDENTITY返回仅在当前插入的值   范围; @@ IDENTITY不限于特定范围。“