代码之家  ›  专栏  ›  技术社区  ›  Malik Daud Ahmad Khokhar

在C中检索返回@@Identity的值#

  •  3
  • Malik Daud Ahmad Khokhar  · 技术社区  · 17 年前

    这是一个非常简单的问题。我有一个sp,它向表中插入一行,在末尾有一个语句返回@@identity。我找不到的是用C检索这个值的方法。我正在使用企业库并使用以下方法:

    db.ExecuteNonQuery(cmd);
    

    我试过了 命令参数[0].值 获取值,但始终返回0。有什么想法吗?

    5 回复  |  直到 17 年前
        1
  •  4
  •   Craig Norton    17 年前
    Dim c as new sqlcommand("...")
    
    Dim d As New SqlParameter()
    d.Direction = ParameterDirection.ReturnValue
    c.parameters.add(d)
    
    c.executeNonQuery
    
    (@@IDENTITY) = d.value
    

    或多或少是这样的……要么是这样,要么只是将存储过程中的值作为输出参数返回。

        2
  •  5
  •   Mitch Wheat    17 年前

    顺便说一句,在大多数情况下,您应该使用scope_identity()而不是@@identity。 Ref .

        3
  •  2
  •   Neil Albrock    17 年前

    一点值得一提。您真的应该使用scope_标识在插入后返回标识值。@@identity有可能返回错误的值。尤其是在使用触发器时,在插入后将值写入其他表。

    Books Online 页了解更多详细信息。

        5
  •  0
  •   thmsn    17 年前

    在我看来,您希望使用标量值执行

    SqlCommand.ExecuteScalar()
    

    正如其他人提到的,我认为使用scope_identity()比@@identity变量更安全

    推荐文章