Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Применение объекта DataReader
8 февраля 2009

Исполнить с помощью объекта Command команду, не возвращающую значении или
возвращающую единственное значение, довольно просто. Чтобы использовать
объект Command с запросами, возвращающими несколько значений, обратитесь к
методу Execute Reader. Он возвращает объект DataReader.
DataReader — это упрощенный объект, обеспечивающий быстрое и эффектив-
ное последовательное однонаправленное чтение данных. Объект Data Reader позво-
ляет перебирать записи результирующего набора, передавая нужные значения на-
прямую коду приложения. При этом DataSet намного эффективнее, но менее гибок
по сравнению с DataAdapter. Данные, полученные через объект DataSet, доступны
только для чтения, поэтому их нельзя модифицировать средствами DataSet. При
этом данные разрешается просматривать только в одном направлении: нельзя вер-
нуться к записи, прочитанной ранее. Кроме того, объект DataReader ориентирован
на использование постоянных соединений и, пока он существует, требует моно-
польного доступа к активному соединению.
Создание объекта DataReader
Объект DataReader нельзя создать напрямую, это делается путем вызова метода
ExecuteReader объекта Command. Подобно другим членам классов провайдеров дан-
ных, у каждого класса DataProvider есть собственный класс DataReader. объект
OleDbCommand возвращает OleDbDataReader, а объект SqlCommand — Sql Data Reader,
например:
Visual Basic .NET
Этот пример предполагает наличие объектов OleDbCommand и
SqlCommand с именами myOleDbCommand and mySqlCommand соответственно.
Dim inyOleDbReader As System. Data.OleDb. OleDbDataReader
Dim mySqlReader As System.Data.SqlClient.SqlDataReader
Эта команда создает новый объект OleDbReader и записывает его в переменную.
myOleDbReader = myOleDbCommand.ExecuteReaderO
Эта команда создает новый объект SqlReader и записывает его в переменную.
mySqlReader - mySqlCommand.ExecuteReaderO
Visual C#
// Этот пример предполагает наличие объектов OleDbCommand и
// SqlCommand с именами myOleDbCominand and mySqlCommand соответстаенно.
System.Data.OleDb.OleDbDataReader inyOleDbReader;
System.Data.SqlClient.SqlDataReader mySqlReader;
// Эта команда создает новый объект OleDbReader и записывает его в переменную.
myOleDbReader - myOleDbCommand.ExecuteReaderO;
// Эта команда создает новый объект SqlReader и записывает его в переменную.
mySqlReader = mySqlCommand.ExecuteReaderO;
При вызове метода ExecuteReader объект Command исполняет представленную
им команду и создает объект DataReader соответствующего типа, который можно
записать в переменную ссылочного типа.
Организация простого доступа к данным с помощью объекта DataReader
Получив ссылку на объект DataReader, можно просматривать записи, загружая нуж-
ные данные в память. У нового объекта DataReader указатель чтения устанавливает-
ся на первую запись результирующего набора. Чтобы сделать ее доступной, следует
вызвать метод Read. Если запись доступна, метод Read переводит указатель объекта
DataReader к следующей записи и возвращает True (true), в противном случае метод
Read возвращает False (false). Таким образом, метод Read используют для перебора
записей в цикле While (while), например, так:
Visual Basic .NET
While myDataReader.ReadO
Этот код будет однократно исполнен
для каждой записи результирующего набора.
End While
Visual C#
while (myDataReader.ReadO)
!
// Этот код будет однократно исполнен
// для каждой записи результирующего набора.
}
При чтении записи с помощью объекта DataReader значения отдельных полей
доступны через индексатор или свойство по умолчанию в виде массива объектов, к
элементам которого разрешается обращаться по индексу либо по имени поля, на-
пример:
Visual Basic .NET
While myDataReader.ReadO
Dim rnyObject As Object = myDataReader(3)
Dim myOtherObject As Object - myDataReader("CustomerID")
End While
Visual C#
while (myDataReader.ReadO)
{
object myObject = myDataReader[3];
object myOtherObject - myDatafieader["CustomerID"];
}
При этом способе доступа DataReader предоставляет все значения в виде объек-
тов, хотя из DataReader допустимо извлекать и типизированные данные. Более по-
дробно об этом рассказано далее.
Прочитав данные с помощью DataReader, следует вызвать метод Close, чтобы за-
крыть DataReader, в противном случае объект DataReader будет удерживать моно-
польный доступ к активному соединению, сделав его недоступным другим объек-
там. При вызове метода Execute Reader, установив свойство Command Behavior в
CloseConneciion, вы автоматически закроете соединение, не вызывая метод Close
явно:
Visual Basic .NET
myDataReader.Closef)
Visual C#
myDataReader.CloseO;
Выборка столбца с помощью объекта DataReader
Следующий пример демонстрирует перебор записей результирующего набора для
вывода содержимого одного из столбцов в окне Console. Этот пример предполагает
наличие объекта OleDbCommand с именем myOleDbCommand, свойство Connection
которого определяет соединение с именем myConnection.
Visual Basic .NET
' Открыть активное соединение.
myConnection.Open()
' Создать объект DataReader и записать его в переменную myReader.
Dim myReader As System.Data.OleDb.OleDbDataReader -
myOleDbCornmana. ExecuteReader()
1 Вызвать метод Read перед попыткой чтения данных.
While myReader.Read()
Получить доступ к полю можно по имени
* либо по его порядковому номеру.
Console.WriteLine(myReader("Customers").ToString())
End While
' Обязательно закрывайте DataReader, закончив работу с ним,
myReader.Close()
' и соединение, если оно больше не нужно.
myConnection.Close
Visual C#
// Открыть активное соединение,
myConnection.Ореп();
// Создать объект DataReader и записать его в переменную oiyReader.
System. Data.OleDb.OleDbDataReader -nyReader =
myOleDbCornmand. ExecuteReader();
// Вызвать метод Read перед попыткой чтения данных.
while (myReader.ReadO)
{
// Получить доступ к полю можно по имени
// лкбо по его порядковому номеру.
Console.WriteLine(myReader["Customers"].ToString());
}
// Обязательно закрывайте DataReader, закончив работу с ним,
myReader,Closet);
// и соединение, если оно больше не нужно
myConnection.Close;
^ Как получить доступ к данным с помощью объекта DataReader
1. Вызовите метод Execute Reader объекта Command и запишите результирующий
объект DataReader в переменную соответствующего типа.
2. Обработайте результирующий набор в цикле While (while}, выполняя любые дей-
ствия над данными внутри цикла. Прежде чем обращаться к данным, следует
вызвать метод Read объекта DataReader.
3. Закончив, вызовите метод Close объекта DataReader, чтобы закрыть соединение.

Теги: .NET

Статьи по теме:

Ограничения Foreign Key
Создание дополнительных типов объектов Doughnut
Реализация полиморфизма через наследование
Создание проекта установочной программы
Общие (статические) члены
Строительные блоки .NET
Принципы создания элементов управления
Полиморфизм
Реализация членов интерфейса на Visual C#
Команды для манипулирования данными
Проверка разрешений, запрашиваемых установленной сборкой
Реализация полиморфизма через интерфейсы
Программа сертификации специалистов Microsoft
Редактор реестра
Добавление элементов управления на панель Toolbox
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Применение объекта DataReader. Регион сайта: Москва и Санкт-Петербург