我的范围标识存在一些问题,从标识列中检索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语句相同。但是这很长,所以很想做到这一点。有什么帮助吗?
答案 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的值