从 C# 检索 SQL Server 中新插入的 ID
本文演示了如何在 MVC 4 应用程序中使用 C# 将数据插入到 SQL Server 表中,并随后检索新添加记录的 ID。 我们将探讨 SQL Server 2005 及更高版本以及 2005 之前版本的方法。
方法 1:SQL Server 2005 及更高版本(使用 OUTPUT INSERTED.ID
)
此方法利用 OUTPUT
子句,这是一种直接在插入语句本身中检索插入的 ID 的高效方法。
<code class="language-csharp">public class MemberBasicData { public int Id { get; set; } public string Mem_NA { get; set; } public string Mem_Occ { get; set; } } public int CreateNewMember(string Mem_NA, string Mem_Occ) { using (SqlConnection con = new SqlConnection(Config.ConnectionString)) { using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic (Mem_Na, Mem_Occ) OUTPUT INSERTED.ID VALUES (@na, @occ)", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = (int)cmd.ExecuteScalar(); con.Close(); return newId; } } }</code>
方法2:2005年之前的SQL Server版本(使用SCOPE_IDENTITY()
)
对于较旧的 SQL Server 版本,SCOPE_IDENTITY()
函数用于检索当前范围内生成的最后一个标识值。
<code class="language-csharp">public int CreateNewMember(string Mem_NA, string Mem_Occ) { using (SqlConnection con = new SqlConnection(Config.ConnectionString)) { using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic (Mem_Na, Mem_Occ) VALUES (@na, @occ); SELECT SCOPE_IDENTITY();", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); return newId; } } }</code>
两种方法达到相同的结果:返回新插入记录的ID。 选择取决于您的 SQL Server 版本。 OUTPUT
子句通常因其在新版本中的效率和清晰度而受到青睐。 请记住将 "Config.ConnectionString"
替换为您的实际连接字符串。
以上是SQL Server中如何获取INSERT命令后插入的ID?的详细内容。更多信息请关注PHP中文网其他相关文章!