首頁 > 資料庫 > mysql教程 > 如何使用 C# 檢索 SQL Server 中新插入記錄的 ID?

如何使用 C# 檢索 SQL Server 中新插入記錄的 ID?

DDD
發布: 2025-01-17 01:31:10
原創
348 人瀏覽過

How to Retrieve the ID of a Newly Inserted Record in SQL Server using C#?

使用 C# 擷取 SQL Server 中新插入的記錄 ID

本指南示範如何在 MVC 4 應用程式中使用 C# 有效地檢索 SQL Server 資料庫中新插入記錄的唯一識別碼 (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) VALUES(@na,@occ)",con))
        {
            cmd.Parameters.AddWithValue("@na", Mem_NA);
            cmd.Parameters.AddWithValue("@occ", Mem_Occ);
            con.Open();

            int modified = cmd.ExecuteNonQuery();

            if (con.State == System.Data.ConnectionState.Open) con.Close();
                return modified;
        }
    }
}</code>
登入後複製

改進的程式碼(帶 ID 檢索):

以下範例展示如何檢索新產生的 ID。 選擇適合您的 SQL Server 版本的方法:

SQL Server 2005 及更高版本(建議):

此方法使用 OUTPUT INSERTED.ID 子句以獲得最佳效能。

<code class="language-csharp">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();

    if (con.State == System.Data.ConnectionState.Open) 
        con.Close();

    return newId;
}</code>
登入後複製

舊版 SQL Server 版本(2005 年以前):

此方法使用 SCOPE_IDENTITY(),效率較低,但適用於舊版。

<code class="language-csharp">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());

    if (con.State == System.Data.ConnectionState.Open) con.Close();
        return newId;
}</code>
登入後複製

兩種修改後的方法都使用ExecuteScalar直接檢索產生的ID。 只有當您受限於較舊的 SQL Server 版本時才應使用 SCOPE_IDENTITY() 方法。 對於 SQL Server 2005 及更高版本,OUTPUT INSERTED.ID 方法效率明顯較高,建議使用。

重要提示: 確保您的 Mem_Basic 表的 ID 欄位定義為資料庫架構中的 IDENTITY 欄位。

以上是如何使用 C# 檢索 SQL Server 中新插入記錄的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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