我的范围标识在从标识列中检索ID时遇到了一些问题

时间:2014-07-10 10:14:04

标签: c# mysql scope-identity

我的范围标识存在一些问题,从标识列中检索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();

这是一个尝试捕获。当我在第二行代码中逐步完成它时,它会触及我的捕获。我仍然很擅长使用这个范围标识。通常我会创建一个全新的select语句,其变量与insert语句相同。但是这很长,所以很想做到这一点。有什么帮助吗?

1 个答案:

答案 0 :(得分: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的值