從 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中文網其他相關文章!