0

我的范围身份从身份列中检索 ID 时遇到了一些问题。

这是我的代码:

cmd = connection.CreateCommand();
cmd.CommandText = "Insert Into oc_manufacturer (name, sort_order) Values(@name, @sort_order);SELECT CAST(scope_identity() AS int)";
cmd.Parameters.AddWithValue("@name", sManufacturer);
cmd.Parameters.AddWithValue("@sort_order", 0);
iManufacturerID = (int)cmd.ExecuteScalar();

cmd.ExecuteNonQuery();

这是在 try catch 中。当我在最后一行代码的第二行单步执行时,它击中了我的目标。我对使用这个范围标识还是很陌生。通常我会创建一个全新的 select 语句,其变量与我的 insert 语句相同。但这很长,所以要做到这一点。有什么帮助吗?

4

1 回答 1

2

也许我错了,但是您已将问题标记为 MySql。在该数据库系统中,您使用 LAST_INSERT_ID() 函数检索最后插入的自动增量值

cmd.CommandText = @"Insert Into oc_manufacturer (name, sort_order) 
                    Values(@name, @sort_order);
                    SELECT LAST_INSERT_ID()";

也不需要调用 ExecuteNonQuery,对 ExecuteScalar 的调用将适用于两个语句,但将返回最后一个 SELECT 的值

于 2014-07-10T10:18:56.887 回答