【发布时间】:2011-05-22 01:00:26
【问题描述】:
我有两个表:Accounts,其中包含用户拥有的帐户信息,AccountUsers,其中包含在上述Accounts 表中拥有帐户的用户列表。
如果我必须删除一个用户,那么我必须从两个表中删除它们,其中AccountUsers 将拥有该用户的一行,而其他用户可能有很多,因为单个用户可以拥有多个帐户。
我编写了以下代码,它运行良好并从两个表中删除了行,但是每当第二个表中有多行时,它就无法删除它们并且ExecuteNonQuery() 返回 0,这意味着 0 行受到影响。
我想知道它是否可以在一行中完成。另外,如何对第二个表中的多行执行此操作,因为我现有的代码仅在有单行时才有效。
代码:
public static bool DeleteUser(int UserId)
{
if (ConnectDatabase())
{
sql_cmd = new SqlCommand();
sql_cmd.Connection = sql_con;
sql_cmd.Parameters.Add("@userId", SqlDbType.Int).Value = UserId;
sql_cmd.CommandText = "DELETE FROM AccountsUsers WHERE Id = @userId";
if (sql_cmd.ExecuteNonQuery() == 1)
{
sql_cmd = new SqlCommand();
sql_cmd.Connection = sql_con;
sql_cmd.Parameters.Add("@userId", SqlDbType.Int).Value = UserId;
sql_cmd.CommandText = "DELETE FROM Accounts WHERE userId = @userId";
if (sql_cmd.ExecuteNonQuery() == 1)
{
return true;
}
else
return false;
}
else
return false;
}
else
return false;
}
【问题讨论】:
标签: c# sql query-optimization