Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СРС / Автономный режим / 6-Приложение, загруж все таблицы БД

.docx
Скачиваний:
4
Добавлен:
28.06.2021
Размер:
167.47 Кб
Скачать

5

  1. Приложение Book.v6, способное загружать все таблицы базы данных

Изучим взаимодействие DataSet с объектом DataAdapter. Создадим приложение, способное загружать информацию из всех таблиц базы данных Book.

Для этого создадим новый проект Windows Forms Application с именем Book.v6, поместив его в решение Disconnected. Проект содержит одну форму Form1. Установим новый заголовок окна формы – Book v6 (свойство Text).

Добавим на форму элемент StatusStrip для отображения строки состояния. В StatusStrip добавим метку StatusLabel с именем lbRecordsCount (свойство Name) для отображения количества записей.

Поместим на форму элемент SplitContainer, в левой части которого распололожим элемент управления TreeView, который будет отображать дерево объектов нашей базы данных, и зададим в его свойстве Dock значение Fill. В правой части поместим элемент управления DataGridView для отображения записей выбранного объекта базы данных. Последний назовем dgvData (свойство Name) и также зададим в его свойстве Dock значение Fill.

Расположим на форме компонент ImageList, который будет контейнером иконок для элемента TreeView. Поместим в ImageList две иконки для отображения корневого и дочерних узлов дерева. Для этого с помощью свойства Images откроем редактор коллекции изображений и поместим туда иконки. Подходящие иконки (Diagram_32XLG.png и table_16xLG.png) можно взять в библиотеке VS 2012 Image Library, которая поставляется вместе с Visual Studio 2012 или скачивается с сайта Microsoft.

В окне Properties для элемента TreeView свяжем свойство ImageList с нашим компонентом imageList1. Внешний вид формы представлен на рисунке.

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

using System;

using System.Data;

using System.Data.Common;

using System.Data.SqlClient;

using System.Windows.Forms;

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

private const string CatalogEntity = "Catalog";

private const string BookEntity = "Book";

private const string UserEntity = "User";

private const string OrderEntity = "Order";

Для класса Form1 создадим группу закрытых переменных-членов класса:

private DataSet bookDataSet;

private SqlDataAdapter adapter;

private SqlConnection connection;

private SqlCommand command;

Для формы Form1 создадим обработчик события Load. В теле обработчика события Load формы поместим код инициализации переменных и заполнения дерева объектов (см. листинг программы – метод Form1_Load).

Вначале создаем объект adapter класса Adapter и объект connection класса Connection. Как и ранее, передаем строку соединения из конфигурационного файла в объект connection. Создаем объект command класса Command. Задаем его свойству CommandType, значение StoredProcedure (команда запуска хранимой процедуры). В свойстве CommandText объекта имя конкретной хранимой процедуры пока не определяем.

Для элемента управления TreeView создадим обработчик события AfterSelect. Он будет срабатывать при выборе узла в дереве объектов и динамически подключать разные наборы данных из нашей базы данных Book. Код обработчика события представлен в листинге (метод treeView1_AfterSelect).

В программе напишем метод SetHiddenFields(), который закрывает ненужные для пользователя поля, например, в объекте Order это поля идентификаторов внешних ключей o_user_ID и o_book_ID. Пользователю нужны поля с названием книги и полным именем клиента, и не нужен идентификатор клиента.

Внешний вид приложения показан на рисунке. Теперь мы можем полностью просматривать все объекты в нашей базе данных.

Резюме

Решаемая задача – чтение информации из всех таблиц базы данных. Приложение работает в отключенном режиме. Реализуются: подключение к базе данных, создание объектов Connection, Command, DataTable, DataSet и DataAdapter.

Достоинства приложения:

  • простота реализации и эффективная работа;

  • не используется постоянное соединение с базой данных.

Недостатки приложения:

  • из базы извлекаются нетипизированные данные (типа Object), которые не могут далее использоваться в приложении (валидация, модификация и т.п.);

  • названия полей объектов базы данных могут иметь не очень понятные для пользователя имена;

  • приложение не позволяет модифицировать данные.