首頁 > 資料庫 > mysql教程 > SQL Server中如何取得INSERT指令後插入的ID?

SQL Server中如何取得INSERT指令後插入的ID?

Mary-Kate Olsen
發布: 2025-01-17 01:27:08
原創
461 人瀏覽過

How to Get the Inserted ID After an INSERT Command in SQL Server?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板