Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция спбд.docx
Скачиваний:
59
Добавлен:
14.09.2019
Размер:
223.04 Кб
Скачать

Класс DataRow

Коллекция объектов DataRow определяет данные, которые хранятся в таблице. При помощи членов этого класса мы можем производить операции вставки , изменения и удаления строк из таблицы, а так же сравнивать значения, которые содержатся в строках.

Методы класса DataRow:

  1. AcceptChanges() – заставляет объект строки принять изменения;

  2. BeginEdit() – начинается редактирование строки;

  3. CancelEdit() – отменяет редактирование строки;

  4. RejectChanges() – отменяет изменении строки;

  5. Delete() – удаляет строку;

  6. EndEdit() – завершает работу в режиме редактирования данных;

  7. InNull() – метод возвращает «истину», если указанная в качестве параметра колонка равна Null;

  8. SetNull() – изменить значение колонки на нулевое.

Пример: Создадим строку для столбца, созданного выше

DataRow dr = dt.NewRow();

dr[“Make”] = “BMW”;

dr[“Color”] = “Зеленый”;

dt.Rows.Add(dr);

Работа со свойством DataRow.RowState

Главное назначение этого свойства – определять в процессе выполнения программы в каком состоянии находятся выбранные нами строки в таблице: были ли они изменены, только что вставлены и т.д. Для свойства DataRowStat используется значение из перечисления DataRowStat:

  1. Deleted – строка была изменена при помощи метода DataRow.Delete();

  2. Detached – строка была создана, но она еще не является частью DataRowCollection;

  3. Modified – строка была изменена, но метод AcceptChange() еще не вызывался;

  4. New/Added – строка была добавлена в коллекцию DataRowCollection, но метод AcceptChange() еще не вызывался;

  5. Unchanged – строка не была измена с момента последнего вызова метода AcceptChange().

Пример:

DataRow dr = dt.NewRow();

Console.WriteLine(“1-”+dr.RowState.ToString()); // выведет Detached

dt.Rows.Add(dr);

Console.WriteLine(“1-”+dr.RowState.ToString());// выведет Added/New

dt.AcceptChanges();

Console.WriteLine(“1-”+dr.RowState.ToString());// выведет Unchanged

Dr[“make”] = ”jeep”;

Лекция 27 апреля Работа со свойством ItemArray

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

Пример:

//Объявляем массив типа object

object [] mas = new object[4];

DataRow dr;

for(int i=0;i<2;i++)

{

mas[0] = i;

mas[1] = “Make”+Console.ReadLine();

mas[2] = “Color”+Console.ReadLine();

….

dr = dt.NewRow();

dr.ItemArray = mas;

dt.Rows.Add(dr);

}

foreach(DataRow r in dt.Rows)

{

Console.WriteLine(“{0}\t{1}\t{2}\t{3}\t”,r[0],r[1],r[2],r[3]);

}

Использование классов DataSet и DataRelation

DataSet

В ADO .NET возможности работы с наборами таблиц, взаимосвязанных друг с другом, представляет класс DataSet.

Объект DataSet – это создаваемый в оперативной памяти набор таблиц, связанных между собой отношениями и снабженными средствами проверки целостности данных.

Схема иерархии данного класса:

Через свойство tables объекта DataSet мы можем получить доступ к отдельным объектам DataTable, которые хранятся в коллекции DataTableCollection.

Через другое свойство – relations мы можем получить доступ к объектам DataRelation, которые хранятся в коллекции DataRelationCollection.

Поскольку DataSet – это представление базы данных, которое помещается в оперативную память клиента, то в этой модели объект DataRelation представляет отношение между таблицами базы данных.

Свойство ExtendedProperties обеспечивает доступ к объектам, хранящимся в коллекции PropertyCollection.

Рассмотрим наиболее важные свойства DataSet:

  1. CaseSensitive – определяет, будет ли во время операций по сравнению текстовых строк в объектах DataTable учитываться регистр букв;

  2. DataSetName – позволяет получить или задать имя для данного объекта DataSet, обычно значение этого свойства задается как параметр, передаваемый конструктору;

  3. DefaultViewManager – позволяет определить представление по умолчанию для отображения данных в DataSet;

  4. EnforceConstraints – позволяет отключить проверку соответствия ограничений при выполении операции обновления данных в DataSet;

  5. HasErrors – позволяет получить значения, определяющие наличие ошибок в DataSet;

  6. Relations – позволяет обратиться к колекции отношений между таблицами DataSet;

  7. Tables – позволяет получить доступ к коллекции таблиц DataSet.

Наиболее важные методы:

  1. AcceptChanges() – позволяет сохранить в DataSet все изменения, произведенные с момента последнего вызова этого метода;

  2. Clear() – Полная очистка DataSet (удаляются все строки из всех таблиц);

  3. Clone() – «клонирует» (копирует) структуру DataSet (без данных);

  4. Copy() – копирует структуру DataSet (вместе с данными);

  5. Merge() - позволяет производить слияние разных объектов DataSet.

Пример:

private DataTable inventory = new DataTable(“Inventory”);

private DataTable customers = new DataTable(“Customers”);

private DataSet carsDataSet = new DataSet(“CarsDataSet”);

carsDataSet.Tables.Add(inventory);

carsDataSet.Tables.Add(customers);

……….

//Создание структуры таблиц ( их столбцов)

……….

DataRow newRow = inventory.NewRow();

carsDataSet.Tables[“Inventory”].Rows.Add(newRow);

DataRelation

объектно-ориентурованнную оболочку вокруг отношений между таблицами представляет класс System.Data.DataRelation. При создании объекта этого класса необходимо будет указать имя этого объекта, а так же родительскую таблицу и подчиненную таблицу.

DataRelation dr = new DataRelation(“InventoryCustomers(objectName)”,

carsDataSet.Tables[“Inventory”].Columns[“CarID”],

carsDataSet.Tables[“Customers”].Columns[“CarID”]);

carsDataSet.Relations.Add(dr);

Основные свойства DataRelation:

  1. ChildColumns, ChildKeyConstrainе, ChildTable – позволяют получить информацию по подчиненной таблице, учавствующей в отношении, а так же ссылку на саму эту таблицу;

  2. DataSet – позволяет получить ссылку на объект DataSet;

  3. ParantColumns, ParentKeyConstraint, ParentTable – позволяет получить информацию о родительской таблице, учавствующей в отношении, а так же ссылку на эту тублицу;

  4. RelationName – позволяет получить или задать имя для данного отношения.