首页 >数据库 >mysql教程 >如何使用 C# 检索 SQL Server 中新插入记录的 ID?

如何使用 C# 检索 SQL Server 中新插入记录的 ID?

DDD
DDD原创
2025-01-17 01:31:10350浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn