首页 >后端开发 >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