将数据保存到数据库时,出现错误:
有一个打开的 DataReader 分配给这个 Command 需要先关闭
删除工作正常,所有内容都被删除,但是当添加新数据时,出现错误。在代码中,我标记了发生错误的行。是什么原因以及如何解决?
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;
}
}
}
返回 ExecuteReader 的 Reader 需要手动关闭。如果您不使用查询结果,请调用 ExecuteNonQuery。