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

СРС / Автономный режим / 5-Приложение, извлек данные для чтения

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

3

  1. Приложение Book.v5, извлекающее данные для чтения

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

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

Для формы создадим обработчик события Load, в тело которого будем писать код, необходимый для чтения информации из базы данных.

Выполним необходимые изменения в коде программы. Код помещаем в тело созданного обработчика события Load формы, как показано в листинге.

Скорректируем подключаемые пространства имен в соответствии со списком, показанным в листинге. Для корректной работы с объектом Connection следует добавить еще одно пространство имен System.Data.SqlClient.

Создаем объект table класса DataTable, представляющий собой одну таблицу с данными в памяти. Задаем имя этой таблицы – Orders и очищаем ее строки. Создаем объект adapter класса DataAdapter.

Создаем объект connect класса Connection. Передаем строку соединения из конфигурационного файла в объект connect. Создаем объект com класса Command. Задаем его свойству CommandType, значение StoredProcedure (команда запуска хранимой процедуры). В свойстве CommandText объекта зададим имя хранимой процедуры Order_Select, осуществляющей выборку из базы данных.

Связываем объект adapter с объектом com. При вызове метода Fill() объекта adapter эта команда исполняется и заполняет данными объект table. Методу Fill() необходимо передать целевой объект, которым является table.

Взаимодействия с объектом класса Connection не происходит. При исполнении команды, вызванной методом Fill(), соединение открывается только на время извлечения данных, после чего сразу же закрывается. Таким образом, после извлечения данные становятся отсоединенными и ими можно манипулировать в коде независимо от базы данных, а при необходимости ее можно и обновить.

Перед отображением данных, находящихся в таблице table, выполняем некоторые дополнительные настройки – скрываем некоторые поля (o_user_ID и o_book_ID).

Наконец, выполняем отображение данных в элементе DataGridView. Элемент DataGridView имеет свойство для привязки данных DataSource. Это свойство задает источник данных типа Object (в нашем случае – объект класса DataTable), для которого DataGridView отображает данные.

Как видно из листинга, один и тот же объект DataTable может быть многократно передан методу Fill(), при вызове которого у объекта DataAdapter заполняется данными DataTable.

Резюме

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

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

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

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

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

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

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