【发布时间】:2010-09-29 10:07:50
【问题描述】:
我正在使用 SqlDataSource sds = new SqlDataSource();在代码后面并使用 sds.Insert() 插入;请告诉我如何获取插入的记录主键值? 请注意我没有使用存储过程。
【问题讨论】:
标签: .net insert return sqldatasource
我正在使用 SqlDataSource sds = new SqlDataSource();在代码后面并使用 sds.Insert() 插入;请告诉我如何获取插入的记录主键值? 请注意我没有使用存储过程。
【问题讨论】:
标签: .net insert return sqldatasource
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 上找到了这个:
【讨论】:
我知道这是一个相当古老的帖子,但万一有人同时登陆这里......
关于 Michael Eakins 的回答(见上文),使用 SCOPE_IDENTITY() 而不是 @@IDENTITY 更安全。
根据 MSDN SCOPE_IDENTITY
"... SCOPE_IDENTITY 返回仅插入到当前 范围; @@IDENTITY 不限于特定范围。”
【讨论】: