Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекція №13-14

Типизированные классы DataSet

Класс DataView

Обновление базы данных

Удаление записей из объектов DataTable

Создание новых строк в объектах DataTable

Для добавления новых строк в таблицу DataTable нужно добавить новые объекты DataRow в коллекцию Rows данной таблицы. Объекты DataRow представляют строки таблицы БД. Создавать объекты класса DataRow с использованием операции new нельзя, вместо этого следует вызвать метод NewRow() объекта DataTable, к которому добавляется объект DataRow. Например:

DataRow myRow;

myRow = tbl.NewRow();

 

Созданный объект DataRow можно заполнить данными, введенными пользователями или полученными из любого источника данных (коллекции или массива). Для доступа к полям записи используется коллекция Item объекта DataRow. Для занесения заполненного объекта DataRow в таблицу, его нужно добавить к коллекции Rows объекта DataTable. Следующий пример показывает заполнение объекта DataRow данными и сохранение его в таблице:

DataSet ds = new DataSet();

DataTable tbl = ds.Tables["MyBooks"];

DataRow row = tbl.NewRow();

myRow ["id"] = 44;

myRow ["authir"] = "Терентьев И.А.";

myRow ["year"] = 2003;

tbl.Rows.Add(row);

Для удаления записей из таблицы можно использовать метод Remove() коллекции Rows класса DataTable. Например:

// здесь tbl объект класса DataTable

tbl.Rows.Remove(row);

 

Кроме этого, можно использовать метод Delete() класса DataRow. Например:

// здесь row объект класса DataRow

row.Delete();

Закончив работу с копией базы данных в объекте DataSet, можно обновить БД, вызвав метод Update() соответствующего объекта DataAdapter, с помощью которого выполянялось заполнение данной таблицы. Например:

DataSet ds = new DataSet();

// создаем и заполняем DataAdapter da

Da.Fill(ds, "Product");

// выполняем изменения таблицы Product в ds

myDataAdapter.Update(ds, "Product");

myOtherDataAdapter.Update();

 

В результате вызова данного метода все изменения, внесенные в объект DataSet, переносятся в реальную БД. При этом можно указать объект DataSet, DataTable или массив объектов DataRows, подлежащий обновлению:

myDataAdapter.Update(myDataSet);

myDataAdapter.Update(myDataTable);

myDataAdapter.Update(myDataRows);

Класс DataView позволяет создать разные (альтернативные) представления (view) одной и той же таблицы. Он включает дополнительные возможности для сортировки и фильтрации записей таблицы. Основными свойствами данного класса являются RowFilter (фильтр), которое задает условие отбора записей из DataTable и Sort (сортировка), которое задает правило сортировки записей (перечисление полей, по значениям которых будут упорядочиваться записи и порядок сортировки: по умолчанию – по возрастанию; если задано DESC – по убыванию). Например:

DataView view = new DataView(myDT);

view.Sort = "LastName ASC, FirstName ASC, Salary DESC";

view.RowFilter = "City = 'Томск'";

 

Объект класса DataView связать с элементами графического интерфейса, например, DataGridView используя свойства DataSource. Пример создания и связывания с DataView:

// создаем объект DataView для объекта DataTable

DataView view = new DataView(employee);

// задаем правила сортировки и условия фильтра отбора

view.Sort = "LastName ASC, FirstName ASC, Salary DESC";

view.RowFilter = "LastName like 'A%' and Salary > 15";

// если есть ЭУ для отображения DataGridView

dgv.DataSource = view;

Класс DataSet не являются строго типизированным, так как в нем каждый элемент данных имеет тип object. В связи с этим, для выполнения над ним любые действий, специфичных для некоторого типа, этот объект следует преобразовать в соответствующий тип (выполнять кастинг). При использовании нестрого типизированных переменных вероятны ошибки изза несоответствия типов, которые весьма непросто найти и устранить. ADO.NET также поддерживает типизированный класс DataSet, альтернатива применению нестрого типизированных переменных.

У объекта типизированного класса DataSet, как можно предположить по его названию, все элементы строго типизированы (имеют конкретный тип). На таблицы и поля такого объекта DataSet можно ссылаться по их дружественным именам, представляющим реальные имена таблиц и столбцов, с которыми выполняется работа; их значения доступны в виде значений соответствующих типов, а не объектов. Это дает приложению целый ряд преимуществ.

Вопервых, код программы становится более понятным и его удобнее сопровождать. Вовторых, ошибки изза несоответствия типов обнаруживаются в период компиляции, а не в период выполнения – это экономит время, необходимое для тестирования. Наконец, полные имена членов коллекций (например, Tables) допустимо заменять их дружественными именами, при этом в период разработки, имена типизированных членов данных отображаются в окнах среды разработки благодаря технологии Intellisense.

Ниже приводится пример эквивалентных строк кода, использующих типизированные и не типизированные объекты DataSet. Оба примера возвращают значения поля OrderID первой записи таблицы Orders в результирующем наборе dsOrders. Для не типизированного объекта DataSet получить это значение можно сделать следующим образом:

string myOrder =

(string)dsOrders.Tables["Orders"].Rows[0]["OrderID"];

 

А типизированных объектов DataSet выполняется так, как показано ниже:

string myOrder = dsOrders.Orders[0].OrderID;

 

Как видно, второй фрагмент существенно проще, более понятный и не требует явного преобразования типов. В действительности типизированный DataSet – это экземпляр совсем другого класса, производного от DataSet. Структура этого класса определяется файлом схемы

XML (XSDфайлом), в котором описаны различные особенности структуры объекта DataSet, в том числе имена таблиц и столбцов. Для создания нового типизированного объекта DataSet требуется файл схемы, но его удается создать, только если структура данных, с которыми вам предстоит работать, известна заранее. Чтобы генерировать типизированный объект DataSet, нужно выполнить в Visual Studio команду Data>Add New Source.... В результате выполнения этой команды появится диалоговое окно мастера “Data Source Configuration Wizard”, с помощью которого можно создать типизированный объект DataSet. По окончанию работы с мастером будет сгенерирован XSDфайл с корректной схемой, необходимый для создания объекта DataSet.

Чтобы заполнить строго типизированный объект DataSet, используется метод Fill() каждого объекта DataAdapter, чьи данные требуется добавить в объект DataSet, передав этот DataSet при вызове как целевой объект.

 

 

з навчальної дисципліни

«ІНТЕЛЕКТУАЛЬНІ СИСТЕМИ ЗАХИСТУ ІНФОРМАЦІЇ В ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ СИСТЕМАХ»

 

Модуль 3. «Технології побудови інтелектуальних систем захисту інформації»

ТЕМА 10. Системи управління знаннями

.

<== предыдущая лекция | следующая лекция ==>
Извлечение связанных записей | Основні поняття предметної області. Заняття 1. Загальна характеристика системи управління знаннями
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 264; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.