Работа с объектами чтения данных

Работа с объектами чтения данных

После создания активного соединения и SQL-команды следующим шагом является предъявление запроса источнику данных. Как вы, наверное, догадываетесь, это можно сделать несколькими способами. Тип DbDataReader (реализующий IDataReader) обеспечивает самый простой и самый быстрый способ получения информации из хранилища данных. Напомним, что объекты чтения данных создают однонаправленный и доступный только для чтения поток данных, возвращающей по одной записи за один раз. Поэтому должно быть вполне очевидно, что объекты чтения данных используются для отправки хранилищу данных только SQL-операторов выборки данных.

Объекты чтения данных оказываются полезными тогда, когда требуется очень быстро просмотреть большой объем данных и при этом нет необходимости заботиться об их представлении в памяти. Например, если вы запрашиваете 20000 записей из таблицы для того, чтобы сохранить их в текстовом файле, то при хранении этой информации в DataSet возникает достаточно большая нагрузка на память. Более выгодным решением оказывается создание объекта чтения данных, который будет обрабатывать каждую запись настолько быстро, насколько это возможно. Но при этом следует учитывать то, что объекты чтения данных (в отличие от объектов адаптера данных, которые мы рассмотрим позже) поддерживают открытое соединение с источником данных, пока вы явно не закроете сеанс связи.

Объекты чтения данных получаются из объекта команды с помощью вызова ExecuteReader(). При вызове этого метода объекту чтения данных можно дополнительно дать инструкцию автоматически закрыть соответствующий объект соединения, указав CommandBehavior.CloseConnection.

В следующем примере использования объекта чтения данных применяется метод Read() для определения момента достижения конца записей (тогда возвращаемое значение оказывается равным false). Для каждой поступающей записи индексатору типа дается указание напечатать информацию о марке автомобиля, его названии и цвете. Также обратите внимание на то, что сразу же после завершении обработки записей вызывается метод Close(), чтобы освободить объект соединения.

static void Main(string[] args) {

 …

 // Получение объекта чтения данных в стиле ExecuteReader().

 SqlDataReader myDataReader;

 myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

 // Цикл по результирующему набору.

 while(myDataReader.Read()) {

  Console.WriteLine("-› Марка – {0}, название – {1}, цвет – {2}",

   myDataReader["Make"].ToString().Trim(),

   myDataReader["PetName"].ToString().Trim(),

   myDataReader["Color"]. ToString().Trim());

 }

 myDataReader.Close();

 ShowConnectionStatus(on);

}

Замечание. Обрезка строковых данных здесь используется только для того, чтобы удалить пробелы в конце полей базы данных, и это никак не связано с ADO.NET.

Индексатор объекта чтения данных перегружен, чтобы ему можно было передать либо строку (представляющую имя столбца), либо целое число (соответствующее порядковому номеру столбца). Поэтому вы можете немного "подчистить" соответствующий фрагмент программы (избавившись от необходимости печатания имен) и использовать вариант, показанный ниже (обратите внимание на использование свойства FieldCount).

while (myDataReader.Read()) {

 Console.WriteLine("***** Запись *****");

 for (int i = 0; i ‹ myDataReader.FieldCount; i++) {

  Console.WriteLine("{0} = {1} ", myDataReader.GetName(i), myDataReader.GetValue(i).ToString().Trim());

 }

 Console.WriteLine();

}

После компиляции и запуска этого проекта вы должны увидеть список всех автомобилей из таблицы Inventory базы данных Cars (рис. 22.7).

Рис. 22.7. Объекты чтения данных

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Завершение построения модели: работа с объектами

Из книги Домашний архитектор. Подготовка к ремонту и строительству на компьютере автора Булат Виталий

Завершение построения модели: работа с объектами Любой дом невозможен без крыши и практически не обходится без подвальных помещений и лестниц. Этот раздел продолжит рассмотрение примера, начатого ранее, и послужит руководством для использования перечисленных объектов


Практическая работа 53. Запуск Access. Работа с объектами базы данных

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Практическая работа 53. Запуск Access. Работа с объектами базы данных Задание. Ознакомиться с окном программы Access. Запустить и рассмотреть учебную базу данных. ВНИМАНИЕ При выполнении задания помните, что все внесенные в базу данных изменения записываются немедленно и их


Работа с MBV-объектами

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Работа с MBV-объектами Наши первые приложения удаленного взаимодействия позволяли доступ клиентов к одному WKO-типу. Напомним, что WKO-типы (по определению) являются MBR-типами, поэтому доступ клиента к ним осуществляется через агента-посредника. В противоположность этому,


Работа с объектами соединения

Из книги ArCon. Дизайн интерьеров и архитектурное моделирование для всех автора Кидрук Максим Иванович

Работа с объектами соединения Первым шагом в работе с поставщиком данных является создание соединения с источником данных, для чего мы используем объект соединения (который, как вы помните, получается из Disconnection). Типы соединения .NET получают на вход форматированную


Работа с объектами команд

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Работа с объектами команд Теперь, когда вы понимаете роль объекта соединения, мы выясним, как предъявить SQL-запрос базе данных. Тип SqlCommand (который получается из DbCommand) является объектом представлением SQL-запроса, имени таблицы или хранимой процедуры. Вид соответствующей


Работа с объектами параметризованных команд

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Работа с объектами параметризованных команд Показанная выше программная логика вставки, обновления и удаления работает так, как и ожидается, однако обратите внимание на то, что каждый из SQL-запросов здесь представлен "жестко" закодированными строковыми литералами. Вы,


Глава 4 Режим конструирования и работа с объектами

Из книги Справочник по PHP автора

Глава 4 Режим конструирования и работа с объектами • Дополнительные объекты конструирования• Воспроизведение окружающего рельефа• Создание сечений• Итог: расширенный порядок построения модели дома в ArConИз предыдущей главы вы смогли узнать, с чего нужно начинать


Глава 11 Работа с объектами

Из книги VBA для чайников автора Каммингс Стив

Глава 11 Работа с объектами Теперь, когда мы научились создавать объекты Adobe InDesign, поговорим о том, что с ними делать. Этот разговор вынесен в отдельную главу по очень простой причине: все операции по перемещению, трансформации, копированию выполняются, по сути, одинаково


Работа с объектами и ссылками

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Работа с объектами и ссылками Вернемся к более приземленным проблемам и рассмотрим, как программные системы работают с объектами, как создают и используют гибкие структуры данных.


Работа с утилизированными объектами

Из книги CorelDRAW X4. Начали! автора Жвалевский Андрей Валентинович

Работа с утилизированными объектами Для реализации fresh и recycle, можно среди других возможных вариантов представить available как стек: fresh будет удалять элемент из стека, а recycle будет помещать элемент в стек. Создадим класс STACK_OF_LINKABLES для этого случая и добавим следующие


Из PHP в Excel: работа с COM-объектами

Из книги SQL за 24 часа автора

Из PHP в Excel: работа с COM-объектами Данная серия статей посвящена созданию документов Excel при помощи PHP. Данная возможнось может понадобиться, например, если нужно предоставить пользователю загружаемые данные в виде листов Excel. Это могут быть прайсы на продукцию,


Работа с объектами и их экземплярами

Из книги автора

Работа с объектами и их экземплярами Перед тем как начать работу с экземпляром какого-либо объекта, его нужно создать. Создание экземпляра объекта выполняется с помощью оператора new: <Переменная> = new <Имя объекта>([<Список параметров, разделенных запятыми>]) После


Глава 8 Работа с растровыми объектами

Из книги автора

Глава 8 Работа с растровыми объектами Мы убеждены, что растровые объекты лучше всего обрабатывать в редакторах растровой графики и только после этого использовать их в CorelDRAW. Частично эту мысль разделяют и разработчики программы, потому что простейшее действие со