首頁 >後端開發 >C++ >如何在 C# 中執行 SQL INSERT 後檢索自動產生的 ID?

如何在 C# 中執行 SQL INSERT 後檢索自動產生的 ID?

DDD
DDD原創
2025-01-17 21:56:11381瀏覽

How to Retrieve Auto-Generated IDs After an SQL INSERT in C#?

在 C# 中 SQL INSERT 後擷取自動產生的 ID

本文解決了一個常見的 C# 程式設計挑戰:在將新記錄插入 SQL Server 資料庫後有效檢索自動產生的 ID。 我們將探索幾種方法,重點介紹它們與不同 SQL Server 版本的兼容性。

假設您正在將資料插入名為「Mem_Basic」的表格並需要新產生的「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 )
{
    // ... (code to be added)
}</code>

一種方法使用 ExecuteScalar(),但這在所有 SQL Server 版本中並不總是可靠:

<code class="language-csharp">int modified =(int)cmd.ExecuteScalar(); //Potentially unreliable in older SQL Server versions</code>

對於 SQL Server 2005 及更高版本,OUTPUT 子句提供了一個強大的解決方案:

<code class="language-csharp">using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)",con))
{
    // ... (rest of the code) 
}</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))
{
    // ... (rest of the code) 
}</code>

這些方法確保開發人員能夠在 SQL INSERT 操作後一致地檢索自動產生的 ID,從而改善 C# 應用程式中的資料管理。

以上是如何在 C# 中執行 SQL INSERT 後檢索自動產生的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn