Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Melo
1

Закрытие SqlDataReader

05.10.2009, 12:49. Просмотров 880. Ответов 1
Метки нет (Все метки)

Критично ли обрамлять работу с SqlDataReader в try/catch с тем чтобы закрывать SqlDataReader в finally-блоке?
Есть огромное количество кода в котором это не делается, то есть в случае возникновения exception строка SqlDataReader.close() не вызывается. Это проблема или нет? Не хотелось бы переделывать тучу кода, тем более, что пока проблем никаких с ним не было - то есть даже в случае возникновения исключения все вроде бы в порядке. Тем не менее есть 'мнение' что это потенциальная проблема. Просветите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2009, 12:49
Ответы с готовыми решениями:

SqlDataReader не видит SqlCommand
Приветствую. Столкнулся с не понятной проблемой, код (похожий) без проблем...

SqlDataReader и бинарные данные
Уважаемое Эксперты помогите пожалуйста ! Я записываю двоичное данное на базе...

SqlDataReader. Тупит SELECT DISTINCT
Есть SELECT запрос... Выполняю команду dataReader=command.ExecuteReader();...

SqlDataReader обращение без индексов
Обычно делаю вот так: using (SqlDataReader dr = myCommand.ExecuteReader()) ...

Ошибка при вызове SqlDataReader
Есть код: static public decimal SumComplectation(SqlConnection...

1
tahorg
0 / 0 / 0
Регистрация: 25.08.2009
Сообщений: 19
05.10.2009, 14:28 2
Вобщем слушай сюда, ибо отсюда будет проистекать. (с) М. Жванецкий.

Почему надо закрывать DataReader, как SQL, так и OleDB ? Я лично вижу аж 2 причины. Первая - пока не закрыт предыдущий Reader на соединение нельзя повесить новый. Вторая - у нас конечно мощные машины, но это не оправдывает ленности - ресурсы надо беречь, а если не делать явного закрытия, то оно произойдет. Но потом. Когда сборщик мусора доберется.

А теперь по существу вопроса. И так уже что-то неординарное произошло, вылетели на ошибку, и вот тут бы как раз и освободить все ненужные ресурсы, да и снять с соединения блокировку, не позволяющую открыть новый Reader, ан нет - тащим все дальше, перекладывая сей труд на сборщик мусора.

Кстати вот подумалось. Соединения у нас пулятся. А как попадает в пул, и как там себя ведет соединение на котором висит незакрытый Reader ? Наверное аж никак, и будет открываться новое, что опять ресурсы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2009, 14:28

Извлечь данные из SqlDatareader в строку
Нужно извлчь данные из дата ридера строкой представляющей собой одну запись...

Получить количество строк из SqlDataReader
Как получить количество строк из SqlDataReader? .FieldCounter - это столбцы. А...

Как передать данные из SqlDataReader в BindingSource?
При загрузке формы, с помощью SqlDataReader-а заполняется ComboBox. private...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru