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

166
12 апреля 2019, 18:10

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

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

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

public bool UpdateSettings(Guid settingsId, List<UsersModel> 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;
        }
    }
}
Answer 1

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

READ ALSO
Как добавить виртуализацию в RichTextBox?

Как добавить виртуализацию в RichTextBox?

Использую WinFormsМне нужно выводить много информации в RichTextBox, но со временем он наполняется большим кол-вом информации и, как следствие, обновление...

152
Console.BackgroundColor ставит неправильный цвет

Console.BackgroundColor ставит неправильный цвет

Я пытаюсь использовать ConsoleBackgroundColor для изменения заднего фона консоли на некий цвет (предположим, синий - Console

142
Экранирование знака вопроса ? regex c#

Экранирование знака вопроса ? regex c#

вот такая вот регулярка долго ломал голову почему ничего не находит, хотя в тексте всё в точности, стал перепроверять посимвольно и не находит,...

126