Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_Prakticheskie_raboty_OPI.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
9.91 Mб
Скачать

1.1.2 Строки (объект Row)

Свойство Rows объекта DataTable возвращает совокупность всех строк таблицы — DataRowCollection. Это свойство следует применять для того, чтобы пользоваться результатами запросов к базе данных. В ADO.NET нет необходимости в итерационном обходе DataSet для получения данных. Вы можете обращаться к записям таблицы как к элементам простого массива. Это значительно упрощает процесс доступа к элементам базы.

Добавление данных.

Осуществляется использованием метода NewRow(). Он не добавляет новую строку, а лишь возвращает ссылку на объект типа DataRow, который имеет ту же структуру, что и объект таблицы, у которой этот метод был вызван.

// получение прототипа строки

DataRow dr = t.NewRow();

Добавление строки возможно с помощью метода Add(). Метод принимает параметры в виде массива элементов типа object. В качестве значений этот массив содержит поля новой строки. Необходимо помнить, что при добавлении строки таким образом, вместо полей, являющихся счетчиками, следует указывать значение null.

//задание значений строке

dr["height"] = 180;

dr["name"] = "Иван Иванович";

//добавить строку к таблице

t.Rows.Add(dr);

Т.е. наполнение DataTable данными осуществляется последовательностью действий:

// задание второй строки

dr = d.NewRow();

dr["height"] = 175;

dr["name"] = "Петр Петрович";

t.Rows.Add(dr);

Заполнение полей.

Для доступа к полям строки используются индексаторы (заключенные в [ ]). При этом, можно использовать как имя соответствующей колонки, так и ее порядковый номер.

// выберем для работы строку 3

DataRow dr = t.Rows[2];

dr["height"] = 10;

dr["name"] = "Vasya";

// либо можно написать по другому

t.Rows[2]["height"] = 10;

//или

t.Rows[2][0] = 10;

Изменение данных.

Изменять данные можно непосредственно обращаясь к ячейке, но это может затрагивать ограничения, наложенные на таблицу. То есть при изменении одного из полей в таблице происходит проверка на выполнение всех условий, наложенных на это значение. И если одно их условий не выполняется, то генерируется исключение.

Существует специальный механизм, позволяющий отключить событие и сообщения, связанные с редактирование данных, на момент редактирования. В таблице 6.4. приведем три метода класса DataRow, реализующие этот механизм.

Таблица 6.4 – Методы класса DataRow, позволяющие отключить сообщения.

Метод

Описание

BeginEdit()

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

EndEdit()

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

CancelEdit()

позволяет завершить редактирование, при этом данные возвращаются к первоначальному состоянию. Метод используется в случае, если в процессе редактирования произошла ошибка, обрабатываемая самой программой.

Состояния строки.

Метод Delete() объекта DataRow – не удаляет строку из таблицы явно, а помечает на удаление. Это достигается путем изменения состояния строки. Перечень значений свойства RowState приведен в таблице 6.5.

Таблица 6.5– Значения свойства RowState.

Свойство

Описание

Added

Строка была добавлена в таблицу, но метод AcceptChanges() еще не вызывался

Deleted

Строка была удалена из таблицы, но метод AcceptChanges() еще не вызывался

Datached

Строка НЕ ЯВЛЯЕТСЯ ЭЛЕМЕНТОМ КОЛЛЕКЦИИ DataRows. Ее создали от имени таблицы, но не подключили

Modified

Некоторые из полей строки были изменены, но метод AcceptChanges() еще не вызывался

Unchenged

Строка не изменялась со времени загрузки при помощи метода Fill() либо с момента вызова метода AcceptChanges()

Кроме свойства RowState строка хранит также информацию о своей версии. Версию строки можно проверить с помощью метода HasVersion. Этот метод принимает в качестве параметров одно из значений перечисляемого типа DataRowVersion и возвращает true, если версии совпадают. В таблице 6.6 представлена структура перечисляемого типа DataRowVersion

Таблица 6.6– Структура перечисляемого типа DataRowVersion

Значение

Описание

Current

текущее значение

Default

версия по умолчанию

Original

начальное значение

Proposed

предлагаемое значение

В таблице 6.7 представлены варианты изменения значений типа DataRowVersion

Таблица 6.7– принципы изменения значений DataRowVersion.

Объект

Вызываемый метод

Значение DataRowVersion

DataRow

BeginEdit()

для всех изменяемых значений доступны версии Current и Proposed

DataRow

CancelEdit()

после вызова метода значение Proposed измененных ячеек будет удалено

DataRow

EndEdit()

значение Proposed = Current

DataRow

AcceptChanges()

Proposed = Current

Original не изменяется

DataTable

AcceptChanges()

Original = Current

DataRow

RejectChanges()

значение Proposed сбрасывается

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]