在 C# MVC 4 中执行 SQL INSERT 后检索插入的 ID
本文演示了如何在 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中文网其他相关文章!