* При перепечатке материалов ссылка на 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

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

Лямбда-выражения
Стандартная система типов CTS
Типы данных .NET Framework
Towards Cleaner Code, A C# Asynchronous Helper
Перебор элементов массивов и наборов
Анти-паттерны в действии или Самые популярные ошибки программистов
Специальные возможности и логотип «Certified for Windows»
Создание конфигурационного файла
Графический дизайнер
Towards Cleaner Code II, a C# GUI Invoke/Async Helper
Защита приложений
Карринг (currying)
Обеспечение совместимости с замещенными или скрытыми членами
Формы, элементы управления и меню
Вложенные типы
| .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 31


     



Rambler's Top100

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

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