Страницы

Поиск по вопросам

четверг, 27 февраля 2020 г.

Ошибка при сохранении данных в БД

#c_sharp #sql_server


При сохранении данных в БД возникает ошибка:


  Существует назначенный этой команде Command открытый DataReader,
  который требуется предварительно закрыть


Удаление работает отлично, все удаляется, но при новом добавлении данных возникает
ошибка. В коде отметил строку где возникает ошибка. В чем причина и как её исправить?

public bool UpdateSettings(Guid settingsId, List usersModel)
{
    using (var connection = new SqlConnection(_connectionString))
    {
        connection.Open();

        try
        {
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "DELETE FROM UsersSettings WHERE SettingsId
= @SettingsId";
                command.Parameters.AddWithValue("@SettingsId", settingsId);
                command.ExecuteReader();
            }

            foreach (var userModel in usersModel)
            {
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = @"INSERT UsersSettings(SettingsId, SettingsValue,
IsEnabled)
                                            VALUES (@SettingsId, @SettingsValue, 1)";
                    command.Parameters.AddWithValue("@SettingsId", settingsId);
                    command.Parameters.AddWithValue("@SettingsValue", userModel.SettingsValue);
                    command.ExecuteReader();  // Ошибка возникает в данной строке
                }
            }

            return true;
        }
        catch (Exception exception)
        {
            _log.LogError("Не удалось сохранить настройки.", exception);
            return false;
        }
    }
}

    


Ответы

Ответ 1



Reader, который возвращает ExecuteReader, нужно вручную закрывать. Если не используете результат запроса, вызывайте ExecuteNonQuery.

Комментариев нет:

Отправить комментарий