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();
}
没有
SELECT CAST(scope_identity() AS int)
插入一行。但是因为我需要使用scope_identity从创建的行中获取ID。但是,当我使用它时,会创建2行而不是1行。
我错过了什么吗?
由于
答案 0 :(得分:4)
您发布的代码中的问题是您运行了相同查询的2倍...一个使用 ExecuteNonQuery(); ,最后一个运行(int)命令.ExecuteScalar (); 强>
如果你试图只使用executeScalar我认为你有你想要的结果......
尝试并希望这会有所帮助...
如果您愿意,可以使用参数来检索身份,就像在Article
中一样答案 1 :(得分:0)
答案 2 :(得分:0)
尝试
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();
}