代码之家  ›  专栏  ›  技术社区  ›  brasskazoo

我可以使用ODBC获取插入行的主键吗?

  •  1
  • brasskazoo  · 技术社区  · 17 年前

    在.NET中使用ODBC对象时,检索插入行的主键的最佳方法是什么?

    例如(VB):

    Dim command As OdbcCommand = gOdbcConn.CreateCommand()
    command.CommandText("INSERT INTO auhinode (node_key, node_desc) VALUES (0, 'New Node')")
    ...
    Dim result As Integer = command.ExecuteNonQuery()
    

    here ,但我想知道是否有特定于ODBC对象的解决方案?

    编辑: 我们之所以使用ODBC,是因为我们支持3种不同的数据库—SQL Server、Oracle和Informix。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    你不会找到一种方法,将工作在所有的3分贝引擎。它们都有不同的方法获取刚刚插入的行的ID。

    选择scope_identity();在sql server中。

    在oracle中,您需要使用序列并自己在表中插入值。

    Informix

    因此,在您的代码中,您必须知道当前配置为使用所需代码的数据库。

    另一种选择是让存储过程进行插入,获取ID并返回给您。然后,您不需要对代码进行任何更改,代码将调用一个返回ID的存储过程,但每个db引擎都有不同版本的存储过程,每个都具有相同的名称,并将它们包含在脚本中以创建数据库。

        2
  •  1
  •   Esteban Araya    17 年前

    假设数据库是SQLServer数据库,那么您所要做的就是:

     SELECT SCOPE_IDENTITY();
    

     SELECT @@IDENTITY;
    

    这是邪恶的。好的,这并不是很糟糕,但如果您有触发器或其他任何东西会在数据库中插入另一条记录,它可能不会返回您要查找的ID。