2行使用@@ IDENTITY/SCOPE_IDENTITY()
问题描述:
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
string query = "INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID); SELECT CAST(scope_identity() AS int)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@FBUID", FBUID);
connection.Open();
command.ExecuteNonQuery();
int lastID = (int)command.ExecuteScalar();
}
当没有2行使用@@ IDENTITY/SCOPE_IDENTITY()
SELECT CAST(scope_identity() AS int)
一个行插入插入的1代替。但是因为我需要使用scope_identity创建的行im的ID。但是,当我使用它时,会创建2行而不是1行。
我错过了什么吗?
感谢
答
您发布的代码中存在的问题是,您运行2次相同的查询......其中一个与ExecuteNonQuery();,最后一个是(int)command.ExecuteScalar();
如果您尝试只使用的ExecuteScalar我认为你有结果的,你想....
尝试,并希望这有助于...
如果你愿意,你可以使用参数来检索身份,就像他们在这个Article
答
尝试做
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
string query = "INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID);";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@FBUID", FBUID);
connection.Open();
command.ExecuteNonQuery();
query = "SELECT CAST(scope_identity() AS int)";
command = new SqlCommand(query, connection);
int lastID = (int)command.ExecuteScalar();
}
试过输出,相同的结果,但这样做。 – Johan 2011-05-24 13:03:59
没关系,忘记删除command.ExecuteNonQuery();.谢谢 – Johan 2011-05-24 13:10:17