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