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

Литература

  1. Кузьменко В.Г. Базы данных в Visual Basic и VBA. – Изд. «Бином», Москва, 2004, 412 с.

  2. Перминов Г.И. Методические материалы к проведению практических занятий. ВШЭ, 2005

  3. Скотт Ф. Баркер. Создание приложений баз данных в среде Visual Basic.Net и ADO.Net. Советы, рекомендации, примеры. – Изд. «Вильямс», Москва, 2003. 550 с.

4. Лабор В.В. Си Шарп: Создание приложений для Windows/ -Мн.: Харвест, 2003 – 384 с.

5. Фролов А.В., Фролов Г.В. Визуальное проектирование приложений С#. –М.:КУДИЦ-ОБРАЗ, 2003 -512 с.

Пример выполнения работы

Задача. Создать интерфейс в Visual Studio C# для работы с базой данных, разработанной в приложении Microsoft Access.

Учебный проект пользовательского интерфейса StudBase предназначен для просмотра и редактирования базы данных Поставщик, созданной в приложении Microsoft Access.

Схема базы данных Поставщик приведена на следующем рисунке.

Подключенный уровень ADO.net

Подключенный уровень предполагает явное подключение/отключение кодовой базы к хранилищу данных. Взаимодействие с хранилищем данных в данном случае производится при помощи объектов подключения, команд и чтения данных.

Используются провайдер данных Microsoft.ACE.OLEDB.12.0

Строка подключения @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Projects\StudBase\Поставщик.accdb"

Объекты:

OleDbConnection

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

OleDbCommand

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

OleDbDataReader

Предоставляет доступ к данным только для чтения в прямом направлении с помощью курсора на стороне сервера.

При запуске программы появляется главное окно (см. ниже) , где представлены раздел отображения полей записи, раздел кнопок навигации и раздел кнопок редактирования.

В данном окне мы можем просматривать таблицу [Накладная-Товар] (поля для редактирования недоступны). В коде для отображения данных использовался запрос с соединением полей из разных таблиц (INNER JOIN), поэтому на форме отображается содержательная информация, а не её коды.

При помощи кнопок навигации (см. рис..ниже) можно переместиться на первую, последнюю, предыдущую и следующую запись таблицы [Накладная-Товар]. Кроме того, можно найти запись по номеру накладной. Если номер накладной в таблице отсутствует, будет выведено соответствующее сообщение.

Раздел кнопок редактирования (см. рис.ниже) позволяет добавлять, редактировать и удалять записи таблицы.

При удалении записи выводится окно подтверждения операции удаления.

При выборе кнопки OK будет удалена текущая запись (запись, которая показана на форме) (DELETE * FROM … ). Текущей записью станет первая запись таблицы. При выборе Отмена никаких действий не будет.

При добавлении записи выводится диалог Вставка записи.

Для полей «номер накладной», «Размер поставки», «Стоимость», «Цена» используются элементы управления TextBox. Для полей «Наименование товара», «Способ поставки», «ФИО экспедитора» и «Поставщик» используются элементы управления ComboBox, которые связаны со соответствующими списками. Это позволяет обеспечить целостность данных. Для поля »Дата поставки» используется элемент DateTimePicker.

Поле «номер накладной» является ключевым (первичный ключ) и не допускает дублирования значений. Поэтому для этого поля выполняется проверка дублирования введенного значения. Проверка осуществляется в обработчике события Validating. Если имеется дублирование, то программа не дает выйти из поля редактирования и выдает предупреждение. Это тоже относится к контролю целостности данных.

При нажатии кнопки ОК происходит вставка записи в таблицу (INSERT INTO … ) и выход из Окна вставки. При нажатии Cancel выходим из окна без внесения изменений.

При добавлении записи выводится диалог Редактирование записи.

В полях диалога отображается информация из текущей записи таблицы. Поле «номер накладной» редактированию не подлежит, поэтому недоступно.

При нажатии кнопки ОК происходит обновление полей записи таблицы (UPDATE [Накладная-товар] SET … ) и выход из Окна редактирования. При нажатии Cancel выходим из окна без внесения изменений.

Автономный уровень ADO.net

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

Создание проекта

  • Запускаем Visual Studio 2010.

  • Создаем новый проект Windows Forms на языке Visual C#

  • Меняем имя проекта на StudBase.

Настройка базы данных Access в качестве источника данных

С помощью мастера настройки источников данных Visual Studio добавляем источник данных к проекту. В большинстве случаев data source служит для привязки данных к интерфейсу пользователя приложения.

  • Открываем в окне Visual Studio панель Источники данных, последовательно выбрав пункты Данные | Показать источники данных.

  • На панели Источники данных нажимем кнопку Добавить источник данных, расположенную в левом верхнем углу (см. рис. 1). Открывается окно Мастер настройки источников данных.

Рис. 1. Кнопка «Добавить источник данных»

  • Выбираем тип источника данных База данных и жмем кнопку Далее (см. рис. 2).

Рис. 2. Выбор типа источника данных с помощью мастера настройки источников данных

  • На странице Выбор подключения базы данных выберите Создать подключение...

  • В диалоговом окне Сменить источник данных выбираем Файл базы данных Microsoft Access и кнопку OK (см. рис. 3).

Рис. 3. Изменение источника данных

  • В диалоговом окне Добавить подключение выбираем кнопку Обзор (см. рис. 4), чтобы открыть окно выбора файлов.

Рис. 4. Добавление подключения

  • В окне выбора файлов выбираем файл F:\Projects\StudBase\Поставщик.accdb и жмем кнопку Открыть, чтобы выбрать базу данных.

  • В диалоговом окне Добавить подключение нажимаем кнопку Проверить подключение, чтобы убедиться в правильности установки соединения с базой данных. Если все правильно, открывается диалоговое окно с сообщением, что подключение создано успешно.

  • После завершения проверки соединения жмем кнопку ОК в диалоговом окне Добавить подключение.

  • В диалоговом окне Выбор подключения базы данных можно посмотреть созданную Строку соединения (см. рис. 5).

Рис. 5. Диалоговое окно «Выбор подключения базы данных», в котором показана строка подключения к БД

  • В диалоговом окне Выбор подключения базы данных нажимаем кнопку Далее.

  • Появится подсказка с вопросом, хотите ли вы скопировать локальный файл данных в проект и соответствующим образом изменить соединение. Чтобы скопировать локальный файл данных в проект, нажимаем кнопку Да.

  • На странице Выберите объекты базы данных разворачиваем узел Таблицы и отмечаем таблицы Накладная-товар, Организации, Список директоров, Список товаров, Список экспедиторов, Способ поставки, чтобы включить их в набор данных (см. рис. 6).

Рис. 6 Диалоговое окно «Выберите объекты базы данных»

  • Жмем кнопку Готово (рис. 6).

Visual Studio создает набор данных, который затем появляется на панели Источники данных.

Создание элементов формы из таблицы набора данных

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

  • На панели Источники данных разворачиваем узел ПоставщикDataSet, чтобы увидеть все таблицы, включенные в набор данных (рис. 7).

Рис. 7 Панель с таблицами источника данных

  • Разворачиваем таблицу Список товаров.

  • Открываем раскрывающийся список связанной таблицы Накладная-товар и выбираем тип перемещения Таблица (рис. 8).

Рис. 8. Связанная таблица Накладная-товар: переход к представлению «Таблица»

В этом случае при перемещении таблицы на форму будут созданы элементы управления для каждого столбца таблицы.

  • Изменяем установленный по умолчанию тип элемента управления для столбца Good ID на ComboBox, выбрав его из соответствующего раскрывающегося списка (рис. 9). Аналогичную операцию выполняем для столбцов DeliveryID (Идентификатор типа поставки), ForwarderID (Идентификатор экспедитора) и MFOID (Идентификатор организации).

Рис. 9. Выбор представления столбца GoodID

  • Перетаскиваем таблицу Накладная-товар на форму.

Visual Studio создает элементы управления для каждого из столбцов таблицы, элемент управления для перемещения по базе данных и все необходимые связи данных для привязки этих элементов управления к таблице. Результирующая форма показана на рис. 10.

Рис. 10. Форма с элементами управления после перетаскивания таблицы Накладная-товар

  • Перетаскиваем таблицу Список товаров на элемент управления типа ComboBox именем goodIDComboBox. Visual Studio при этом создаст связь между таблицей Список товаров и данным элементом управления, в результате чего элементы раскрывающегося списка автоматически заполнятся содержимым таблицы Список товаров. Вместо фактических идентификаторов товаров в раскрывающемся списке будут показаны наименования товаров. Это происходит потому, что Visual Studio автоматически изменяет привязку данных так, чтобы отображалось значение первого строкового столбца таблицы, который не входит в состав первичного ключа. В таблице Список товаров первый столбец строкового типа, который не является частью первичного ключа, — это столбец GoodName (Наименование товара).

  • Используя эту же методику, создаем привязку к данным, чтобы заполнить элементы управления ComboBox с именами deliveryIDComboBox, forwarderIDComboBox и mFOIDComboBox содержимым таблиц Способ поставки, Список экспедиторов и Организации соответственно.

  • Меняем тест меток на содержательные названия (рис. 11).

Рис. 11. Форма с содержательными метками для элементов управления