powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Возврат DataSet из функции
21 сообщений из 21, страница 1 из 1
Возврат DataSet из функции
    #38186199
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мучает меня вопрос: насколько безопасен в смысле освобождения ресурсов следующий код.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static DataSet GetDataSet(string sqlQuery)
        {  
            using (SqlDataAdapter da = new SqlDataAdapter(sqlQuery, Connection))
            {
                using (DataSet dataSet = new DataSet("QueryResult"))
                {
                    da.Fill(dataSet);
                    return dataSet;
                }
            }
        }



И вообще хорошая ли практика из функции возвращать объекты БД такие как DataSet, DataTable, DataRow?
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186235
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni,
если не изменяет память, Dispose у Dataset пустой,( атавизм) ( могу ошибиться - поправьте), так что вызывать или нет
не критично.
Ну а что тут крамольного - родить его в функции, с точки зрения кода стек этой функции все равно поднимется в стек вызываемой.
Вполне нормально, с точки зрения рефакторинга...
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186373
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
                using (var some = new ...)
                {
                    ...
                    return some;
                }


Безотносительно DataSet... стремно так делать
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186380
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,

Я это понимаю. Поэтому возникает мысль о том, что вытащить нужно всё из SQL-ных объектов, запихнуть всё в какой-то свой класс основанный на List<>, а SQL-ные аккуратно убить.

ЗЫ. Код не мой. Мне предстоит сопровождение.
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186424
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степис точки зрения кода стек этой функции все равно поднимется в стек вызываемой.
стек ни при делах, говнодатасет - всё равно в куче
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186428
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
стек функции и указатель на ds в этом стеке
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186562
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

мы же не о С++ говорим(где можно вернуть из функции указатель на экземпляр класса лежащий в стеке и долго потом думать почему всё развалилось)
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186692
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Ну тут как бы не стоит вопрос - развалилось
а хорошо ли возвращать из функции указатель на объект из кучи, для дальнейшего использования.
Ну и мое имхо по этому примеру.
статический метод, результат метода в usingе
это ли не подсказка компилятору оптимизировать его как inline ( без aggressiveinlining)
проверить впрочем очень просто - имхо, заменить блок using на finally и там ds=null
если нас не вынесет в nullreferencexcep при использовании - то метод упрощен..( но это как бы на уровне предположения)
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186699
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиа хорошо ли возвращать из функции указатель на объект из кучи, для дальнейшего использования.
иначе и не бывает.
(о структурах сейчас не говорим)
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186710
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
так ну и что же я тут написал крамольного?
"с точки зрения кода стек этой функции все равно поднимется в стек вызываемой"
я могу в рабочей функции заменить функцию GetDataSet ее телом в ручную, и ничего не будет -
антирефакторинг, или за меня это сделает компилятор ( как встройка).
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186724
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи"с точки зрения кода стек этой функции все равно поднимется в стек вызываемой"

крамола в том, что на стеке вызываемой ничего не создаётся, ничего никуда не поднимается
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186795
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
sutniИ вообще хорошая ли практика из функции возвращать объекты БД такие как DataSet, DataTable, DataRow?
Нормальная практика. За исключением того, что DataSet - это собственно сам по себе "отражение" базы данных и ее возвращать его не очень правильно. А вот DataSet, считанный из XML - вполне нормально.
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186799
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Датасету всё равно, из базы он считан или из XML или руками слеплен. Для того и задуман был
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186816
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2,

Датасету всё равно, из базы он считан или из XML или руками слеплен. Для того и задуман был
Да. Но из базы напрямую DataSet не скачать. Вернее структуру - можно, а вот данные таблиц придется каждую отдельно закачивать
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186820
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вернее структуру - можно, а вот данные таблиц придется каждую отдельно закачивать
это проблемы конкретных адаптеров
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186825
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

у меня качается сразу
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38186886
Grigory_R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ds=GetDataSet('select * from')
переменная ds получит указатель на память в куче, в чем проблема то?
когда количество ссылок на память будет=0, сборщик ее освободит.
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38187331
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ViPRosCat2,

у меня качается сразу
Ну, поделись знаниями. Какой функцией?
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38187335
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

LoadMacrotype :)
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38187340
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ViPRosCat2,

LoadMacrotype :)
Поиск - "ничего не найдено"
...
Рейтинг: 0 / 0
Возврат DataSet из функции
    #38190296
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возврат DataSet'a - безопасен.
Но автору, лучше возвращать DataTable.
Я бы по крайней мере так бы и сделал.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Возврат DataSet из функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]