СРС / Автономный режим / 5-Приложение, извлек данные для чтения
.docx
Приложение 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), которые не могут далее использоваться в приложении (валидация, модификация и т.п.);
приложение не позволяет модифицировать данные.