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

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 259

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 253 254 255 256 257 258 < 259 > 260 261 262 263 264 265 .. 320 >> Следующая

<Emplоуее>
<EmpID?500</EnipID>
</Employee>
Если же мы установим для свойства ColumnMapping значение MaрріngTyре.Attribute, то столбиу ЕстрШ в текстовом файле УЖ будут соответствовать уже следующие строки:
<&ср:оуае EmpID - "5OQ",''
Подробнее об интеграции ADO.NET и XKL будет рассказано ниже, когда мы будем обсуждать тип DataSet. Сейчас же мы (надеемся) внесли некоторую ясность в отношении типа D3taC'o\jiTin и приступаем к рассмотрению еще одмоі'о очень важного типа - DataRow.
Код приложения DataColumn можно найти в подкаталоге Chapter 13.
640 Глава 13 • Доступ к данным при помощи
Таблица 13.5. Члены класса DataRow
Член
Назначение
AcceptChangesQ RejectChangesO
Begin Ed it() EndEditO Cancel Edit( J
Delete() HasErrors
GetColumnsInErrors()
GetColumnError()
ClearErrorsO
RowError
IsNuIIO ItemArray RowState Table
Для записи в строку (или отказа от них) всех изменений, произведенных начиная с момента, когда последний раз был вызван метод AcceptChangesQ
Начать, зазершить, прекратить операции редактирования для объекта
DataRow
Помечает строку для удаления при следующем вызове метода AcceptChangesO
Свойство HasErrors возвращает логическое значение, определяющее, присутствуют ли ошибки ! значениях столбцов для данной строки. Если такие ошибки есть, то для получения значений, которые нарушают установленные правила, можно использовать метод GetColumnsInError(), Для получения описания ошибки можно использовать GetColumn?rror(), a ClearErrorsO просто удаляет все ошибочные значения из строки. Свойство RowError позволяет настроить текстовое описание для ошибки
в столбце
Возвращает информацию о том, содержит ли строка в указанном поле пустое значение (значение типа NULL)
Позволяет получить или установить значения всех полей строки при помощи массива объектов
Позволяет получать информацию о состоянии объекта DataRow.
Используются значения из перечисления RowState
Это свзясто используется для получения указателя на тзблнщ, содержащую текущий объект DataRow
Работа со свойством Row. RowState
Большинство методов и свойств класса DataRow используется только в контексте
размещения объекта DataRow в таблице (DataTable). Мы вскоре познакомимся с операциями вставки, удаления и изменения строк, но до этого мы рассмотрим свойство RowState класса DataRow. Главное назначение этого свойства — определять (в процессе выполнения программы), в каком состоянии находятся выбранные нами строки в таблице: были ли они изменены, только что вставлены и т. п. Для свойства Scvatotа используются значения из перечисления Dt-.taRowStste (табл. 13.6).
Таблица Значения перечисления DataRowState Значение Описание
Deleted Строка была изменена при помощи метода Data Row. Delete
Detached Строка была создана, но она еще не является частью DaUiRoivCollection. Обычно строка находится в таком состоянии непосредственно после вставки или после принудительного вывода из коллекции DataRowCollection
Modified Строка была изменена, но метод еще не вызывался
New Строка была в коллекцию но метод
еще не был вызван
Unchanged Строка не была изменена с момента последнего вызова метода
Тип DataRow 641
Проиллюстрировать различные состояния DataRow можно при помощи следующего кода:
puLl С class DRState {
public static void MainO
І
II Создаем DataTable из одного столбца DataTable myTable * new DataTable("Employees");
DataColumn col ID - new DataColunn(" EmpID". Type.GetType<"System.lnt32")V. myTable.Columns.Add(colID);
II Начинаем работу с DataRow DataRow myRow:
II Создаем объект DataRow (пока в СОСТОЯНИИ Detached)
myRow - myTab!e.NewRowt);
Consol e .Wri teL і ne( myRow. RowState. ToSt ri ng ());
Il Теперь добавлен его в таблицу
myTablе. Rows.Add(myRow):
Consolе.Wri teL і ne(myRow.RowState.ToSt ri ng()):
Il Записываем изменения myTablе.AcceptChanges():
Corso'e.HrUeUneCmyRo*. RowState,ToSlr;ng{)):
II Изменяем строку myRow["EmpId"] = 100;
Consol e.Wri teLinefmyRow. RowState. ToStringO);
// А теперь ее удаляем myRow.DeleteO:
Consol e. Wri teLIne(myRow. RowState. ToStringO); myRow.AcceptCha nges О;
}
}
Результат работы программы комментариев не требует (рис. 13.5).
^ D:\C5hafp8ook\tafa\Oi opt er іЗ\ДОгіПгж*Ц
I 1 Iu;; I. r«*t піц HouKtate \\n> pt: r I. у :
Detached Б
New
Unchanged
find if ied
Deleted
:'ї-=- • any hey і.и cunt. inue
zi

Рис. 13.5. Разные состояния строки
Как мы могли убедиться, ADO.NET позволяет отслеживать различные ния строк. Очень важно, что при помощи свойства RowState можно выяснить, какие строки были изменены, а какие — нет. Основываясь на этой информации, ADO.NET передает по сети для записи в базу данных только те строки, которые были реально изменены пользователем, что во многих случаях экономит значи-
642 Глава * «¦ Доступ к данным при помощи ADO.NET
тельное количество сетевого трафика. Знание возможностей работы со свойством DataRow. Rowstate позволит нам оптимизировать передачу данных от одного уровня приложения другому.
Работа со свойством ItemArray
Предыдущая << 1 .. 253 254 255 256 257 258 < 259 > 260 261 262 263 264 265 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100