КАТЕГОРИИ: Архитектура-(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. Системи управління знаннями .
Дата добавления: 2014-01-04; Просмотров: 264; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |