У меня есть две таблицы: 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;
}