首页 > 数据库 > mysql教程 > SQL Server中如何获取INSERT命令后插入的ID?

SQL Server中如何获取INSERT命令后插入的ID?

Mary-Kate Olsen
发布: 2025-01-17 01:27:08
原创
458 人浏览过

How to Get the Inserted ID After an INSERT Command in SQL Server?

从 C# 检索 SQL Server 中新插入的 ID

本文演示了如何在 MVC 4 应用程序中使用 C# 将数据插入到 SQL Server 表中,并随后检索新添加记录的 ID。 我们将探讨 SQL Server 2005 及更高版本以及 2005 之前版本的方法。

方法 1:SQL Server 2005 及更高版本(使用 OUTPUT INSERTED.ID

此方法利用 OUTPUT 子句,这是一种直接在插入语句本身中检索插入的 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) 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();
            con.Close();
            return newId;
        }
    }
}</code>
登录后复制

方法2:2005年之前的SQL Server版本(使用SCOPE_IDENTITY()

对于较旧的 SQL Server 版本,SCOPE_IDENTITY() 函数用于检索当前范围内生成的最后一个标识值。

<code class="language-csharp">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); SELECT SCOPE_IDENTITY();", con))
        {
            cmd.Parameters.AddWithValue("@na", Mem_NA);
            cmd.Parameters.AddWithValue("@occ", Mem_Occ);
            con.Open();
            int newId = Convert.ToInt32(cmd.ExecuteScalar());
            con.Close();
            return newId;
        }
    }
}</code>
登录后复制

两种方法达到相同的结果:返回新插入记录的ID。 选择取决于您的 SQL Server 版本。 OUTPUT 子句通常因其在新版本中的效率和清晰度而受到青睐。 请记住将 "Config.ConnectionString" 替换为您的实际连接字符串。

以上是SQL Server中如何获取INSERT命令后插入的ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板