Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADO Intro 1 Task.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
555.2 Кб
Скачать

Поставщики данных

Связь с базой данных поддерживается за счет группы функциональных объектов, называемой поставщиками данных (.NET Data Providers). Их совместная работа позволяет управлять эффективностью процесса обмена данными.

  • Connections — классы, осуществляющие соединение с источником данных,

  • DataAdapters — классы, осуществляющие перенос данных из реальных таблиц базы данных в коллекцию таблиц (объектов типа DataTable), поддерживаемых классом DataSet.

  • Commands — классы, реализующие выполнение команд (SQL-запросов или хранимых процедур) при обращении к базе данных.

  • DataReaders — классы, осуществляющие выборку данных из базы в безопасном режиме (read-only).

Эти объекты работают в случае, когда источником данных является реальная база данных, а не коллекция, массив или XML-файл. Сейчас мы рассмотрим случай, когда источником данных является не база данных, а XML-файл. Знакомство с другими поставщиками данных пока отложим. Далее в курсе мы покажем, как связать DataSet с реальной таблицей базы данных, созданной в архитектуре OLEDB или SQL Server.

Источник данных — xml-файл

Рассмотрим приемы работы с объектами классов ADO.NET: DataSet, DataTable, DataColumn, DataRow и DataRowView, а также элементом табличного отображения данных — DataGridView, который на сей раз будет связан не с коллекцией типа BindingList<Person>, как было в предыдущем семестре, а с набором данных, управляемым классом DataSet. Рассмотрим ситуацию, в которой необходимо управлять данными двух связанных таблиц Студенты и Экзамены, как показано на рисунке.

Множество студентов будем хранить в объекте класса DataTable. Множество экзаменов будем хранить в другом объекте этого же класса. Класс DataTable определен в пространстве имен System.Data. Он является стержнем дерева классов подсистемы ADO.NET, обладает универсальными возможностями, позволяя оперировать произвольными данными в памяти. Объекты класса DataTable содержат коллекции строк (DataRow) и колонок (DataColumn), они активно используются другими классами, такими как: DataSet (отображение в памяти всей базы данных) и DataView (образ таблицы).

  • Создайте новый проект типа Windows Forms c именем StudExam, переименуйте файл и класс (Form1 в FormMain),

  • В строке Text свойств формы задайте значение Students DataSet, установите свойство Size=746; 500.

Элементы управления на форме Меню

Наше приложение обойдется без меню (вместо него мы используем ToolStrip), поэтому советую пропустить этот параграф. Но если вы хотите узнать, как работать с классами, реализующими функциональность меню, то следуйте таким путем. Добавьте компонент MenuStrip, идентифицируйте его как mainMenu, в правом верхнем углу отыщите кнопку Smart button (см. на следующем рис. ), нажмите ее и выберите команду Insert standard Items.

Откройте пункт меню Edit и добавьте две команды &Find и ToolStripSeparator, как показано ниже.

Как устроены планки меню, статуса и панелей инструментов

Объект MenuStrip имеет вложенную коллекцию Items объектов типа ToolStripItem.

  • Класс ToolStripItem — абстрактный, от него происходят классы: ToolStripControlHost, ToolStripDropDownItem, ToolStripLabel, ToolStripStatusLabel, ToolStripButton и ToolStripSeparator.

  • ToolStripControlHost является базовым для классов: ToolStripComboBox, ToolStripTextBox, ToolStripProgressBar.

  • Класс ToolStripDropDownItem — абстрактный. Он порождает классы: ToolStripDropDownButton, ToolStripMenuItem, ToolStripSplitButton.

Как видите, в обычное меню (а также в контекстное меню—ContextMenuStrip, панель управления—ToolStrip и планку статуса — StatusStrip) можно добавлять кнопки, выпадающие кнопки, текстовые метки, выпадающие списки, поля ввода, индикаторы прогресса. В них можно добавить и любой другой элемент управления (например, календарь), но для этого надо немного потрудиться — разработать код класса, производного от ToolStripControlHost.

Наша планка меню MenuStrip mainMenu содержит коллекцию ссылок на объекты ToolStripMenuItem. Каждый такой объект, в свою очередь, содержит коллекцию ссылок DropDownItems на объекты типа ToolStripMenuItem. Они являются ссылками на реальные или виртуальные команды меню. Каждый объект класса ToolStripMenuItem способен породить дерево вложенных объектов (меню), пока вам не надоест вкладывать меню в меню и вы не остановитесь на каком-то уровне. Объекты этого, последнего уровня и будут рабочими командами меню.

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