Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 62

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 56 57 58 59 60 61 < 62 > 63 64 65 66 67 68 .. 260 >> Следующая

Метод (ч:1\Ыт аналогичен свойству Item. Он принимает целое число и возвращает содержимое соответствующего поля с универсальным типом данных Object. Метод GetValue и различные методы ¦ ¦< -t 'L-nCln;чп:нпринимают только целочисленные значения, соответствующие порядковому номеру поля, и не осуществляют построчный поиск, как свойство Item.
Назначение объекта DataReader — обеспечить высокую производительность, и, учитывая элемент набора быстрее отыскать по порядковому номеру, а не по имени.
Методы веиТтДанных>
Объект DataReader также предоставляет которые возвращают значения с
конкретным типом данных. Если известно, что поле содержит данные с типом string, можно вызвать метод GetValue объекта DataReader и затем привести данные к типу string или же просто воспользоваться методом
Visual Basic .NET
Dim strCompanyName As String Dim rdr As OleDbDataReader
strCompanyName = rcr.SetStringdntConpenyNameTndex)
'или
strCompanyName =
Visual C# .NET
string
OleDbDataReader rdr;
strCompanyName = //или
strCompanyName = rdr.GetValue(iirtCompanyNamelndex) .ToString();
У объекта DataReader предусмотрены методы для всех типов данных .MI Framework - GetByte, GetCbar. GetDateTime и т.д.
Метод GetValues
Метод позволяет поместить содержимое записи в Если вам нуж-
но максимально быстро получить содержимое каждого поля, использование метода GetValues обеспечит более высокую производительность, чем проверка значений отдельных полей.
¦Объект DatoAdapterupn помощи объекта DataReader выбирает данные из БД и помещает их в объекты DataTable. Чтобы обеспечить максимальную производительность, объекты DataAdapter поставщиков данных МЕТ из состава Visual Studio NET используют метод GetValues объекта DataReader.
ГЛАВА 4 Выполнение запросов к базе данных 117
Visual Basic .NET
Dim As OleDbDataReader = cmd. ExecuteFleader() Dim aData(rdr.FieldCount - 1) As Object While rdr.Read
rdr. GetValues(aData)
Console.WriteLine(aData(0).ToString) End While
Visual C# NET
OleDbDataReader rdr = cmd.ExecuteReader(); ¦ob]ect[] aData = new object[rdr. FieldCount]; while (rdr.ReadO)
{
rdr.GetValues(aData);
Console.WrlteLine(aData[0].ToSt ring());
}
Примечание Visual Basic 1 ¦ и "Visas! C* по-разному создают
вы, что учтено в приведенном выше фрагменте кода. Так, оператор Dim aData(4)As Object создает в Visual Basic и Visual Basic .NET массив из пяти элементов (0 — 4), а оператор objectfpData = new оЬ]ес1[4]со-здает в Visual С*. NET массив из четырех элементов (0 — 3).
Метод NextResult
Если вы имеете дело с пакетными запросами, возвращающими несколько н; боров результатов, для перехода к следующему набору следует использовать метод NextResult. Как и метод Read, NextResult возвращает логическое значение, сообщающее, есть ли еще наборы результатов.
Фрагмент кода в разделе «Вопросы, которые стоит задавать почаще* показывает, как с помощью объекта l)ai^Ri.ade; просмотреть результаты пакетного запроса и как использовать метод NextResult в цикле.
Метод Close
При работе с объектами DataReader важно в цикле просмотреть результаты и как можно быстрее закрыть DataReader. Объект Connection невозможно использовать для каких-либо операций, если имеется активный пожарный курсор, открытый с его помощью. Если вы попытаетесь воспользоваться объектом Connection, с которым связан открытый объект DataReader. система выдаст исключение, гласящее, что операции «требуется открытое и доступное соединение».
Примечание Некоторые БД допускают на одном соединении несколько запросов с ожидающими результатами. В начальной версии ADO.NET объект
Connection с открытым объектом DataReader считается заблокированным;
для выполнения каких-либо операций объект DataReader рекомендуется закрыть независимо от того, допускает ли БД наличие на одном со-
11Є Часть И Подключаемся: использование поставщика данных NET
единении іичіи иько запросов с ожидающими результатами. Ікм.можніі. в будущей версии а:.>0>' \': I эта модель поведения будет изменена.
Это ограничение, удивит разработчиков, имеющих опыт работы с ADO,
но не тех, кто имел дело с kl" 1 Различные технологии доступа к данным Microsoft по-разному ре ni-,lui эту ситуацию.
Если вы попытаетесь открыть в БД SQL Server два пожарных курсора с использованием ADO, все будет работать нормально и система не выдаст никакой ошибки. Это обусловлено тем. что. если текущее соединение заблокировано, OLE DB-поставщик выполняет :<.inpi ¦шсмшч.- действие по новому соединению.
Думаю, разработчикам, работавшим с ADO, знакомо сообщение об ошибке ..Connection is busy with results from another hstmt.». ODBC не выполняет какой-либо закулисной работы, чтобы помочь вам разрешить возникшую ситуацию. Если вы попытаетесь воспользоваться занятым соединением, то просто получите общение об ошибке.
Какой из этих подходов ошибки или выполнение нужного
действия по новому соединению) лучше? Разработчики как из Microsoft, так и из других компаний, не могут прийти к единому мнению. Фактически каждая новая технология доступа к данным МкзгъоМ подходила к этой ситуации иначе, чем ее предшественница: V7tS'vL генерирует ошибку, 1Ш)Де! открывает новое соединение, RDO генерирует ошибку. ADO открывает новое соединение и ADO.NET генерирует ошибку.
Предыдущая << 1 .. 56 57 58 59 60 61 < 62 > 63 64 65 66 67 68 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100