问题描述
|
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行。
我错过了什么?
谢谢
解决方法
您发布的代码中的问题是您运行2次相同的查询...一次使用ExecuteNonQuery();最后一个是(int)command.ExecuteScalar();
如果您尝试仅使用executeScalar,我想您就会得到想要的结果。...
尝试并希望这会有所帮助...
如果需要,可以像本文中一样使用Parameter检索标识。
,如果您要使用gbn或我的第一个问题的答案,则不应出现此问题。
,尝试做
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();
}