Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
46 / 46 / 1
Регистрация: 14.10.2008
Сообщений: 179

SqlCommand.ExecuteReader(). Что происходит?

29.11.2022, 11:47. Показов 2132. Ответов 21

Студворк — интернет-сервис помощи студентам
Добрый день. Вопрос простой. После вызова ExecuteReader сразу все данные считываются из базы данных? Или по мере новых вызовов Read() он как-то досчитывает уже отобранные данные?

Просто я пытаюсь понять:

правильно ли и ЭКОНОМИЧНО ЛИ будет вместо этого:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Main()
{
    using (var reader = SomeCommand.ExecuteReader())
    {
        TakeReader(reader);
    }
}
 
/* --- */
 
private void TakeReader(DbDataReader reader)
{
    // какие-то действия с переданным открытым ридером
}
сделать ЭТО:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Main()
{
    List<IDataRecord> records;
    using (var reader = SomeCommand.ExecuteReader())
        records = reader.Cast<IDataRecord();
 
    TakeRecords(records);
}
 
/* --- */
 
private void TakeRecords(IEnumerable<IDataRecord> records)
{
    // какие-то действия со списком строк
}
Благодарен за внимание

Добавлено через 3 минуты
P.S. не имею в данный момент возможности попробовать проверить все с использованием профайлера например... может кто-то задавался таким вопросом уже..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2022, 11:47
Ответы с готовыми решениями:

MySqlDataReader mdr = cmd.ExecuteReader() почему происходит ошибка
public void InsertGroupData(string Group, string kurs, int idProfile, string tbGroup) { string conStr =...

В какой части матрицы происходит накопление суммы. обьясните, что и как происходит, пожалуйста
Uses crt; Var a: Array of Real; i,j,n,k: Integer; s: Real; BEGIN Randomize; Writeln('Введите размер матрицы: ');...

Что-то случилось (подлагивает игра, с температурой процессора происходит что-то странное)
Всем привет. Сегодня утром включил компьютер, зашёл в игру (hoi4) и заметил что подлагивает , сразу начал смотреть температуру системы и...

21
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,765
Записей в блоге: 4
29.11.2022, 15:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vasiliusis Посмотреть сообщение
то остальные 667 находятся на сервере во Вьетнаме
Именно там.

Добавлено через 1 минуту
Цитата Сообщение от Vasiliusis Посмотреть сообщение
или же в оперативной памяти моего приложения?
У вас они окажутся после выполнения вот этого цикла
C#
1
2
3
4
5
6
7
while (await sqlDataReader.ReadAsync())
{
    drawSystem.DrawSystemID = (int)sqlDataReader["ID_DrawSys"];
    drawSystem.DrawID = (int)sqlDataReader["ID_Draw"];
    drawSystem.DrawSystemSheet = sqlDataReader["List"] as string ?? "";
    drawSystem.DrawSystemName = sqlDataReader["SystemName"] as string ?? "";
}
Добавлено через 54 секунды
Vasiliusis, Прошу прощения, вот этого
C#
1
2
3
4
5
6
7
8
9
while (await sqlDataReader.ReadAsync())
{
    countries.Add(new Country
    {
        CountryID = (int)sqlDataReader["ID_HRDCountry"],
        Name = (string)sqlDataReader["Country"],
        IsForeigner = (int)sqlDataReader["IsForeigner"]
    });
}
0
Эксперт .NET
 Аватар для Usaga
14796 / 9570 / 1367
Регистрация: 21.01.2016
Сообщений: 36,073
30.11.2022, 07:20
Цитата Сообщение от Vasiliusis Посмотреть сообщение
Т.е. если скажем, у меня 2000 строк в результате, я считал 1333 из них при помощи ReadAsync(), то остальные 667 находятся на сервере во Вьетнаме, или же в оперативной памяти моего приложения?
На сервере во Вьетнаме. ADO.NET не будет выгребать все данные сразу в оперативку. Как минимум потому, что это может быть невозможно. А как максимум - неоптимально.

Сам сервер СУБД тоже не будет выгребать всю выборку, только некоторыми частями, через буфер.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2022, 07:20

В этой части кода происходит объявление функций? Что такое void? Что в скобках?
В этой части кода происходит объявление функций? Что такое void? Что в скобках? void get(float **mas, int N, int M); void...

ExecuteReader()
Вот код который работал, после того как я удалил с одной и той же БД таблицу и создал новую таблицу перстал работать(Менял...

Нужно описание исходного кода скринсейвера, т.е. где что происходит, что чему и для чего присваивается и т.д
unit unitMain; interface uses Windows, Classes, Graphics, Forms, Registry; type TfrmMain = class(TForm) procedure...

Асинхронный ExecuteReader
Добрый день друзья! Помогите мне пожалуйста открыть соединение и выполнить чтения из БД асинхронно! Вот конкретный пример: public...

SqlCommand
Добрый день всем, есть вопросик, есть подключение к базе на SQL, как с помощью команды SQL вывести название конфигурации и список ее узлов,...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru