Введение в программирование на C# 2.0

DataReader


Компонента провайдера, объект – представитель (варианта) класса DataReader.

Предоставляет подключенный к источнику данных набор записей, доступный лишь для однонаправленного чтения.

Позволяет просматривать результаты запроса по одной записи за один раз. Для доступа к значениям столбцов используется свойство Item, обеспечивающее доступ к столбцу по его индексу (то есть ИНДЕКСАТОР!).

При этом метод GetOrdinal объекта – представителя класса DataReader принимает строку с именем столбца и возвращает целое значение, соответствующее индексу столбца.

Непосредственно обращением к конструктору эту компоненту провайдера создать нельзя. Этим DataReader отличается от других компонент провайдера данных.

Объект DataReader создается в результате обращения к одному из вариантов метода ExecuteReader объекта Command (SqlCommand.Execute Reader возвращает ссылку на SqlDataReader, OleDbCommand.Execute Reader возвращает ссылку на OleDbDataReader).

То есть выполняется команда (например, запрос к базе данных), а соответствующий результат получается при обращении к объекту – представителю класса DataReader.

Метод ExecuteReader возвращает множество значений как ОДИН ЕДИНСТВЕННЫЙ ОБЪЕКТ – объект – представитель класса DataReader. Остается только прочитать данные.

Выполняется запрос, получается объект – представитель класса DataReader, который позволяет перебирать записи результирующего набора и... ПЕРЕДАВАТЬ НУЖНЫЕ ЗНАЧЕНИЯ КОДУ ПРИЛОЖЕНИЯ.

При этом DataReader обеспечивает чтение непосредственно из базы и поэтому требует монопольного доступа к активному соединению. DataReader реализован без излишеств. Только ОДНОНАПРАВЛЕННОЕ чтение! Любые другие варианты его использования невозможны.

// Создание объектов DataReader. Пример кода. System.Data.OleDb.OleDbCommand myOleDbCommand; System.Data.OleDb.OleDbDataReader myOleDbDataReader; myOleDbDataReader = myOleDbCommand.ExecuteReader();

System.Data.SqlClient.SqlCommand mySqlCommand; System.Data.SqlClient.SqlDataReader mySqlDataReader; mySqlDataReader = mySqlCommand.ExecuteReader();



Содержание раздела