首页 > 数据库 > mysql教程 > 如何在 C# MVC 4 中的 SQL INSERT 命令后检索插入的 ID?

如何在 C# MVC 4 中的 SQL INSERT 命令后检索插入的 ID?

Patricia Arquette
发布: 2025-01-17 01:42:13
原创
501 人浏览过

在 C# MVC 4 中执行 SQL INSERT 后检索插入的 ID

How to Retrieve the Inserted ID After an SQL INSERT Command in C# MVC 4?

本文演示了如何在 MVC 4 应用程序中使用 C# 插入数据并检索新插入记录的 ID。 虽然 ExecuteNonQuery 表示受影响的行数,但获取插入的 ID 需要不同的方法。

最直接的方法是使用ExecuteScalar。 但是,结果需要显式转换为整数:

<code class="language-csharp">int modified = (int)cmd.ExecuteScalar();</code>
登录后复制

执行成功后,modified将保存新生成的ID。

对于 SQL Server 2005 及更高版本,利用 OUTPUT 语句中的 INSERT 关键字可提供更有效的解决方案:

<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 modified = (int)cmd.ExecuteScalar();

    if (con.State == System.Data.ConnectionState.Open) con.Close();

    return modified;
}</code>
登录后复制

对于较旧的 SQL Server 版本,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 modified = Convert.ToInt32(cmd.ExecuteScalar());

    if (con.State == System.Data.ConnectionState.Open)
        con.Close();

    return modified;
}</code>
登录后复制

这些方法可确保您准确检索插入记录的 ID,无论您的 SQL Server 版本如何。 请记住在生产环境中适当处理潜在的异常。

以上是如何在 C# MVC 4 中的 SQL INSERT 命令后检索插入的 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

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