【问题标题】:Get inserted ID back from SqlConnection.Execute stored procedure从 SqlConnection.Execute 存储过程中获取插入的 ID
【发布时间】:2020-11-25 16:17:44
【问题描述】:

我正在向我的数据库中插入数据,如下所示:

using (IDbConnection conn = new SqlConnection(connectionString))
{
    conn.Execute(storedProcedure, parameters, commandType: CommandType.StoredProcedure);
}

我已将select SCOPE_IDENTITY(); 添加到我的存储过程中,因此现在从查询中返回了id。如何访问它?

【问题讨论】:

  • 如果您只插入一行,我个人会将SCOPE_IDENTITY 的值分配给输出参数,而不是选择它。

标签: c# sql-server .net-core dapper sqlconnection


【解决方案1】:

这看起来像 Dapper,是吗?所以:不要使用Execute,而是使用QuerySingle<T> 来表示您选择的任何T - 大概是intlong

var id = conn.QuerySingle<int>(storedProcedure, parameters,
    commandType: CommandType.StoredProcedure);

附带说明:在INSERT 期间,您可能会发现use the OUTPUT clause 更容易。

【讨论】:

    【解决方案2】:

    使用 ExecuteScalar。

    using (IDbConnection conn = new SqlConnection(connectionString))
    {
       var command = conn.CreateCommand();
       command.CommandType = CommandType.StoredProcedure;
       command.CommandText = "MyProcedure";
       var id = Convert.ToInt32(command.ExecuteScalar());
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多