Файл: Лекция 18 Технология доступа к данным в среде visual studio 2010 Рекомендуемые источники.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 146

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Часть II РЕАЛИЗАЦИЯ И ЭКСПЛУАТАЦИЯ БАЗ ДАННЫХ Раздел V Программный интерфейс доступа к данным

Лекция 18

Технология доступа к данным в среде VISUAL STUDIO 2010

Рекомендуемые источники

ISBN: 978-5-9775-0617-5

Автор: Голощапов Алексей Леонидович

Редактор: Кондукова Екатерина

Издательство: BHV, 2011 г.

Серия: В подлиннике

Страниц: 544 (Газетная)

Тип обложки: обл - мягкий переплет (крепление скрепкой или клеем)

Иллюстрации: Черно-белые

Масса: 488 г

Размеры: 232x166x23 мм

Этапы создания клиентского приложения

Создание интерфейса клиентского приложения в Visual Studio происходит в несколько этапов:

§1 Технологии доступа к данным и Объекты связи

ODBC предназначена для обеспечения возможности взаимосвязи между различными SQL-совместимыми БД.

В архитектуре ODBC используется один ODBC Driver Manager и несколько ODBC-драйверов, отвечающих за реализацию особенностей доступа к каждой отдельной СУБД.

Преимущества:

В технологии OLE DB используется механизм провайдеров, под которыми понимают поставщиков данных.

Кроме поставщика данных имеются также сервис провайдеры, реализующие самые различные сервисные функции.

Данные технологии представляют собой высокоуровневые объектные модели (библиотеки функций) и создают еще один уровень абстракции между приложением и функциями ODBC и OLE DB.

DAO (Data Access Objects) можно использовать для операций с источниками данных ODBC двумя способами: через Microsoft Jet или новую технологию ODBCDirect.

Технология DAO предназначена преимущественно для создания БД с помощью СУБД MS Access, т.к. кроме замены функций ODBC она осуществляет также прямой доступ к функциям ядра MS Jet базы данных Access.

Модель объекта не содержит таблиц, среды. Здесь основными объектами являются:

Данная технология реализована в виде динамически подключаемых библиотек и имеет достаточно развитый интерфейс прикладных программ, названный IDAPI (Integrated Database Application Program Interface).

Этот интерфейс представляет собой набор функций для работы с базами данных

Объекты связи

Объекты связи - это объекты проекта, осуществляющие обмен информацией между интерфейсом БД и файлом данных.

Объекты связи всегда находятся на клиентской машине. Они осуществляют доступ к файлам данных, передавая информацию в интерфейс БД, и содержат внутри себя запросы, выполнения на стороне клиента.

Замечание: Объекты связи также могут ограничивать доступ к информации и осуществлять защиту информации, хотя для защиты информации и ограничения доступа лучше использовать сам сервер.

Технологии в объектах связи

Существует три технологии используемых в объектах связи:

Технология ADO

ADO является более старой технологией.

Технология RDO

Согласно технологии RDO файлы данных рассматриваются в качестве устройств, т.е. для работ с БД необходим драйвер.

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

Технология ADO.Net

Плюсы и минусы технологий

§2 Подключение проекта к файлу БД

Мастер подключений

В Visual Studio подключение проекта к файлу БД можно произвести двумя способами:

Настройка связи подключение вручную

В Visual Studio можно создавать объекты связи вручную и их настраивать.

Создание и настройка соответствующих объектов связи

1. Создание подключения начинается с создания объекта DataSet.

Объект DataSet не может сам подключится к источнику данных перед его созданием необходимо настроить "DataSources" (оконное меню Data\Add Data Sources).

После создания объекта DataSet появляется окно "Add Data Set". В нем необходимо в выпадающем списке "Typed Data Set" выбрать источник данных из "Data Sources".

Файл набора данных

Создание объекта BindingSource

DataSource - указанный объект DataSet;

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

Следующие свойства необязательны для настройки:

Filter - свойство для фильтрации данных, в нем записывается условие отбора для какого-то поля;

Sort - сортировка информации

Allow New - позволяет добавлять новые записи.

Создание объекта TableAdaper и BindingNavigatior

3. После добавления DataSet и BindingSource автоматически будет добавлен объект TableAdapter.

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

Настройка вида панели навигации

Затем можно настроить внешний вид панели навигации при помощи следующих свойств:

AddNewItem - отображает кнопку для добавления новой записи;

DeleteItem - отображает кнопку для удаления текущей записи;

AddNextItem - отображает кнопку для добавления новой записи после текущей;

MoveFirstItem - отображает кнопку для перехода к первой записи;

MoveNextItem - отображает кнопку для перехода к следующей записи;

MovePreviousItem - отображает кнопку для перехода к предыдущей записи;

MoveLastItem - отображает кнопку для перехода к последней записи;

CountItem - отображает общее количество записей;

PositionItem - отображает номер текущей записи.

§2 Интерфейс информационных систем. Создание интерфейса пользователя

Интерфейс информационных систем

В системах построенных по технологии клиент-сервер существует два вида интерфейса:

Интерфейс, реализуемый при помощи клиентского приложения

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

Основными элементами клиентских приложений являются формы (окно программы) и отчёты.

Элементы управления на форме называется объектами.

Каждый объект обладает своим набором свойств, событий и методов.

Объекты форм

В БД все объекты форм делятся на два класса:

Формы в клиентском приложении

Все формы в клиентском приложении делятся на три группы:

Формы для работы с данными - формы, содержащие как объекты управления, так и объекты просмотра данных. Такие формы предназначены для отображения, изменения, удаления и анализа данных;

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

Замечание: Кнопочная форма, которая появляется первой после запуска программы, называется, главной кнопочной формой.

Виды дизайна форм

Замечание: Существует два вида дизайна форм:

§2.1 Создание интерфейса пользователя

Создание ленточной формы

"DataSources"'>Создание интерфейса при помощи окна "DataSources"

Visual Studio позволяет создавать не сложный интерфейс БД, без помощи панели объектов и окна свойств, лишь используя окно "DataSources".

Замечание: Таким способом можно создавать только определённые объекты для отображения данных поля, и набор этих объектов зависит от типа данных поля.

Создание объектов для отображения данных перетаскиванием состоит из двух шагов:

Подключение объектов к источнику данных при помощи окна свойств

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

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

Его выделяют, затем на панели свойств разворачивается группа свойств "DataBindings" она содержит два свойства:

Источники данных

Открыть панель "Источники данных" (Data Sources) можно, щелкнув по ее вкладке в правой части окна среды разработки

На панели "Источники данных" отобразите поля необходимой таблицы щелкнув по значку , расположенному слева от имени таблицы.

§2.1.2 Стандартные объекты для отображения данных. Программное управление информационной системой

Стандартные объекты для отображения данных

Операция состоит из двух шагов:

Замечание: В случае подключения объекта к источнику данных, способом, описанным выше, подпись к объекту не создаётся автоматически и её надо создавать вручную с помощью объекта Label.

Наиболее часто в БД используются следующие объекты для отображения информации:

Label - полностью аналогичен объекту TextBox, но не позволяет изменить данные. Этот объект используется для отображения заблокированных неизменяемых полей.

ListBox- список отображающий значения полей и позволяющий выбирать значения полей из списка. Более того, пункты списка можно задавать, используя другой источник данных.

ComboBox - объект подобный объекту ListBox, однако информация отображается не в списке, а выпадающем списке.

DataGridView - объект, отображающий источник данных (таблицу, запрос или фильтр) в виде таблицы.

DataPicker - специальный объект, предназначенный для отображения полей типа данных "Дата/Время" в виде календаря.

Этот объект может быть создан только при помощи панели объектов и его подключение осуществляется либо перетаскиванием на него поля из окна "Data Sources", либо заданием его свойств вручную.

По своим свойствам он ничем не отличается от объекта TextBox.

Единственное дополнительное свойство у этого объекта это свойство Mask.

Замечание: Тип данных отображаемой информации должен совпадать с типом данных маски.

Программное управление информационной системой

В Visual Studio добавлять, удалять записи и перемещаться по ним можно как используя объект Navigator, так и используя обычные кнопки.

Пример: Создадим кнопоки для управления записями. В Visual Studio все операции с записями осуществляются с использованием объекта "BindingSource".

Для добавления новой записи из таблицы "Студенты" используется команда вида СтудентыBindingSource.AddNew

Вместо метода AddNew можно использовать методы:

MoveNext (перейти к следующей);

MoveFirst (Перейти к первой);

MovePrevious (Перейти к предыдущей);

MoveLast (Перейти к последней);

Delete (Удалить запись).

<Поле1><Оператор1><Выражение1>

[AND|OR <Поле2><Оператор2><Выражение2>…]

Здесь:

<Поле1>, <Поле2> ... - поля на которые накладываются условия;

<Оператор1>, <Опрераторы2> - операторы сравнения, участвующие в условиях;

<Выражение1>, <Выражение2> - выражения с которыми сравниваются поля. Под выражениями понимаются, константы, переменные, формулы, функции и свойства объектов

Пример: Из таблицы "Студенты" необходимо отобразить студента, у которого значение поля ФИО равно "Петров".

Filter_=_"ФИО_=_Петров"'>СтудентыBindingSource.Filter = "ФИО = 'Петров'"

Свойство Filter объекта BindingSource

Обычно при формировании запроса при помощи свойства Filter задания условий отбора используют либо списки ListBox, либо выпадающие списки ComboBox.

Замечание: Если мы используем ComboBox для создания динамического фильтра, то в меню действий параметры "Value Member" и "Selected Value" настраивать не надо.

СтудентыBindingSource.Filter = "ФИО='" & ComboBox1.Text & "'"

После нажатия кнопки в DataGridView отображаются данные по студенту, выбранному в выпадающем списке ComboBox1.

Создание сложных ленточных форм для работы с данными

Coхранение изменений

Рассмотрим последнюю процедуру более подробно.

Она содержит следующие команды:

Me.Validate() - проверяет введенные в поля данные на соответствие типам данных полей;

Me.СтудентыBindingSource.EndEdit() - закрывает подключение с сервером;

Me.TableAdapterManager.UpdateAll(Me.StudentsDataSet) - обновляет данные на сервере.

Для создания текстовых полей ввода по маске на панели объектов используется кнопка

Теперь

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

Затем перетащите поле на форму мышью, расположив, его справа от надписи "Курс".

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

В панели действий под опцией "Use data bound items" расположены следующие параметры:

Data Source (Источник данных) - определяет таблицу или запрос из которого заполняется список;

Display Member (Член отображения) - определяет поле значениями которого заполняется список;

Value Member (Член значений) - определяет значения какого поля подставляются в связанное с выпадающим списком поле;

Selected Value (Выбранное значение) - определяет связанное с выпадающим списком поле.

Для изменения параметров необходимо нажать кнопку внутри поля параметра.

Появится древовидная структура выбора источника данных.

Указание параметров

В нашем случае зададим выше перечисленные параметры следующим образом:

Параметр "DataSource" как "Other Data Sources\Project Data Sources\StudentsDataSet\Специальности";

Параметр "DataMember" как "Наименование специальности";

Параметр "Value Member" как "Код специальности";

Параметр "Selected Value" как "СтудентыBindingSource\Код специальности".

§2.2 Создание интерфейса пользователя

Создание табличной формы

§2.2.1 Объект для отображения табличной информации DataGridView. Настройка свойств столбцов в DataGridView

Объект для отображения табличной информации DataGridView

Объект DataGridView предназначен для отображения всей информации из таблиц, запросов или фильтров на форме в виде таблицы.

Этот объект может быть создан как:

Свойства объекта DataGridView

Настройка свойств объекта DataGridView осуществляется в основном через меню действий. Возможны следующие настройки:

Меню действий объекта DataGridView

Также в меню действий возможны следующее действия с таблицей:

Замечание: В объекте DataGridView имеется возможность сортировки данных. Для этого используется метод Sort, имеющий следующий синтаксис:

DataGridView.Sort(<Имя столбца>, <Порядок сортировки>)

где DataGridView - это имя объекта,

System.ComponentModel.ListSortDirection.Ascending - сортировка по возрастанию;

System.ComponentModel.ListSortDirection.Descending - сортировка по убыванию.

Доступ к отдельным ячейкам таблицы

Замечание: Доступ к отдельным ячейкам таблицы можно получить через подобъект Item. Обращение к нему осуществляется следующим образом:

DataGridView.Item(i,j).<Свойство>

Здесь DataGridView - это имя объекта, i - горизонтальная координата ячейки, а j - вертикальная, <Свойство> - это настраиваемое свойство ячейки.

Пример: В верхнюю левую ячейку таблицы записать слово "Привет" и сделать цвет текста в ячейке красным.

DataGridView.Item(0,0).Value = "Привет"

DataGridView.Item(0,0).Style.ForeColor = Color.Red

§2.2.2 Создание табличных форм для отображения данных.

Фильтрация и сортировка данных, организация поиска информации в таблице

В появившемся списке объектов для отображения всей таблицы выберите "DataGridView"

Далее настроим свойства объектов.

1. Начнем с настройки свойств формы. Задайте свойства формы следующим образом:

FormBorderStyle (Стиль границы формы): Fixed3D;

MaximizeBox (Кнопка развертывания формы во весь экран): False;

MinimizeBox (Кнопка свертывания формы на панель задач): False;

Text (Текст надписи в заголовке формы): Таблица "Студенты" (Табличный вид).

2. Зададим свойства надписей (Label1, Label2, Label3 и Label4) как:

AutoSize (Авторазмер): False;

Text (Текст надписи): "Таблица "Студенты" (Табличный вид)", "Поле для сортировки", "ФИО:" и "Критерий" (Соответственно для Label1, Label2, Label3 и Label4).

Font (Шрифт): Microsoft Sans Serif, размер 14;

ForeColor (Цвет текста): Темно синий;

TextAlign (Выравнивание текста): MiddleCenter.

Для того чтобы нельзя было произвести сортировку не выбрав поля изначально заблокируем кнопку "Сортировать" (Button1).

3. У группирующей рамки зададим заголовок (Свойство Text) равным "Сортировка".

расположенной в верхнем правом углу таблицы. В меню действий выберите пункт "Edit columns…"

В окне "Edit Columns" из списка полей удалите поля "Код студента" и "Код специальности", выделив их и нажав кнопку "Remove" (Удалить).

Список полей примет вид показанный на рисунке.

Для закрытия окна редактирования полей, и сохранения изменений нажмите кнопку "Ok".

§2.2.3 Создание табличных форм для отображения данных. Написание кода обработчиков событий объектов

Разблокировка кнопки

Закончив настройку свойств объектов и перейдем к написанию кода обработчиков событий объектов.

Button1.Enabled = True

Сортировка данных по выбранному полю

Обработчика события нажатия кнопки "Фильтровать"

Дважды щелкните по кнопке "Фильтровать" и в процедуре обработки события "Button2_Click" наберите код:

СтудентыBindingSource.Filter = "ФИО='" & ComboBox1.Text & "'"

Замечание: У объекта СтудентыBindingSource имеется текстовое свойство Filter которое определяет условие фильтрации. Условие фильтрации имеет синтаксис:

"<Имя поля><Оператор>'<Значение>'".

В нашем случае значение поля "ФИО" приравнивается к значению, выбранному в выпадающем списке (ComboBox1.Text)

Отмена фильтрации записей

Заметим, что если присвоить свойству "Filter" значение пустой строки (""), то его действие будет отменено.

Реализация поиска информации в таблице

Данная процедура состоит из двух частей:

Первый блок For i=0…..Next i. перебирает все ячейки таблицы и устанавливает в них белый цвет фона и черный цвет текста. То есть, отменяет результаты предыдущего поиска;

Кнопка "Закрыть"


Далее настроим свойства объектов.

1. Начнем с настройки свойств формы. Задайте свойства формы следующим образом:

FormBorderStyle (Стиль границы формы): Fixed3D;

MaximizeBox (Кнопка развертывания формы во весь экран): False;

MinimizeBox (Кнопка свертывания формы на панель задач): False;

Text (Текст надписи в заголовке формы): Таблица "Студенты" (Табличный вид).

2. Зададим свойства надписей (Label1, Label2, Label3 и Label4) как:

AutoSize (Авторазмер): False;

Text (Текст надписи): "Таблица "Студенты" (Табличный вид)", "Поле для сортировки", "ФИО:" и "Критерий" (Соответственно для Label1, Label2, Label3 и Label4).

Font (Шрифт): Microsoft Sans Serif, размер 14;

ForeColor (Цвет текста): Темно синий;

TextAlign (Выравнивание текста): MiddleCenter.

Зададим надписи на кнопках как: "Сортировать", "Фильтровать", "Показать все", "Найти" и "Закрыть" (Соответственно для кнопок Button1, Button2, Button3, Button4 и Button5).

Для того чтобы нельзя было произвести сортировку не выбрав поля изначально заблокируем кнопку "Сортировать" (Button1).

3. У группирующей рамки зададим заголовок (Свойство Text) равным "Сортировка".

4. У переключателей (Объекты RadioButton1 и RadioButton2) зададим надписи как "Сортировка по возрастанию" и "Сортировка по убыванию", а у переключателя "Сортировка по возрастанию" (RadioButton1) зададим свойство Checked (Включен) равное True (Истина).

расположенной в верхнем правом углу таблицы. В меню действий выберите пункт "Edit columns…"


Заполним список (ListBox1) значениями, представленными на рисунке, а затем нажмем кнопку "Ok".

В окне "Edit Columns" из списка полей удалите поля "Код студента" и "Код специальности", выделив их и нажав кнопку "Remove" (Удалить).

Список полей примет вид показанный на рисунке.

Для закрытия окна редактирования полей, и сохранения изменений нажмите кнопку "Ok".


После перечисленных действий появится окно настройки свойств полей таблицы "Edit Columns"

Закроем окно действий выпадающего списка. На панели невидимых объектов появится дополнительный объект связи "СтудентыBindingSource1"
, предназначенный для заполнения выпадающего списка

Настроим заполнение выпадающего списка именами студентов из таблицы студенты. Отобразив меню действий выпадающего списка. Включим опцию "Use Data Bound Items". Установим параметр "Data Source" равным "Other Data Sources\Project Data Sources\StudentsDataSet\Студенты", а параметр "Display Member" равным "ФИО". Остальные параметры оставим без изменений.

После настройки всех вышеперечисленных свойств объектов новая форма примет вид:

§2.2.3 Создание табличных форм для отображения данных. Написание кода обработчиков событий объектов

Разблокировка кнопки

Закончив настройку свойств объектов и перейдем к написанию кода обработчиков событий объектов.

Работу с кодом начнем с написания кода для разблокирования кнопки "Сортировать", при выборе пункта списка (ListBox1). Для создания процедуры события дважды щелкните ЛКМ по списку. Появится процедура обработки события, происходящего при выборе пункта списка (ListBox1_SelectedIndexChanged). В процедуре наберите команду разблокировки кнопки "Сортировать" (Button1):

Button1.Enabled = True

Сортировка данных по выбранному полю

Теперь перейдем к созданию кода сортирующего нашу таблицу в зависимости от выбранного поля и порядка сортировки при нажатии кнопки "Сортировать". Дважды щелкните ЛКМ по кнопке "Сортировать". Появится процедура "Button1_Click", выполняемая при щелчке ЛКМ по кнопке. В процедуре наберите код: Затем следует блок Select Case…End Select, присваивающий в переменную Col имя выбранного столбца таблицы в зависимости от номера выбранного пункта списка (ListBox1.SelectedIndex). Если выбран первый пункт списка, то в переменную Col записывается столбец DataGridViewTextBoxColumn2, если второй, то - DataGridViewTextBoxColumn3 и так далее. Хотелось бы отметить тот факт, что нумерация пунктов списка начинается с нуля, а нумерация столбцов с единицы. Первый столбец "ФИО" носит имя DataGridViewTextBoxColumn2, так как имя DataGridViewTextBoxColumn1 имеет столбец заголовков строк; Блок If…End If выполняет следующую операцию: если включен переключатель "Сортировка по возрастанию" (RadioButton1), то отсортировать таблицу по полю заданному в переменной Col по возрастанию (СтудентыDataGridView.Sort (Col, System.ComponentModel.ListSortDirection. Ascending)), иначе по убыванию (СтудентыDataGridView.Sort (Col, System. ComponentModel.ListSortDirection. Descending)).
Рассмотрим код более подробно:

Обработчика события нажатия кнопки "Фильтровать"


Дважды щелкните по кнопке "Фильтровать" и в процедуре обработки события "Button2_Click" наберите код:

СтудентыBindingSource.Filter = "ФИО='" & ComboBox1.Text & "'"

Замечание: У объекта СтудентыBindingSource имеется текстовое свойство Filter которое определяет условие фильтрации. Условие фильтрации имеет синтаксис:

"<Имя поля><Оператор>'<Значение>'".

В нашем случае значение поля "ФИО" приравнивается к значению, выбранному в выпадающем списке (ComboBox1.Text)

Отмена фильтрации записей

Теперь перейдем к кнопке "Показать все", отменяющей фильтрацию записей. Дважды щелкните по вышеперечисленной кнопке. Появится процедура Button2_Click. В появившейся процедуре наберите команду СтудентыBindingSource.Filter = " "

Заметим, что если присвоить свойству "Filter" значение пустой строки (""), то его действие будет отменено.

Реализация поиска информации в таблице

Данная процедура состоит из двух частей:

Первый блок For i=0…..Next i. перебирает все ячейки таблицы и устанавливает в них белый цвет фона и черный цвет текста. То есть, отменяет результаты предыдущего поиска;

Второй блок For i=0…..Next i. перебирает все ячейки таблицы и если они содержат текст, введенный в поле ввода (TextBox1), то устанавливает в них голубой цвет фона и синий цвет текста, чем выделяет искомые ячейки.
Дважды щелкните по кнопке "Найти". В появившейся процедуре обработки нажатия кнопки "Button4_Click" наберите следующий код:

Кнопка "Закрыть"

Наконец рассмотрим код для кнопки "Закрыть". Дважды щелкните ЛКМ по этой кнопке и в появившейся процедуре "Button5_Click" наберите команду "Me.Close()", закрывающую выше рассматриваемую форму В заключение создадим кнопку на ленточной форме, отображающей таблицу "Студенты", для отображения соответствующей табличной формы. Откройте ленточную форму для таблицы "Студенты" (Form4) и поместите на нее новую кнопку, как это показано на рисунке. Задайте надпись у новой кнопки (свойство Text), как "Таблица".
Button8
Подключим к кнопке "Таблица" созданную ранее табличную форму (Form6). Для этого дважды щелкните ЛКМ по кнопке "Таблица" и в появившейся процедуре "Button8_Click" наберем команду "Form6.Show".
Проверим работоспособность созданной табличной формы. Запустим проект и на главной кнопочной форме нажмем кнопку "Таблица "Студенты"
". На появившейся ленточной форме, отображающей таблицу "Студенты" нажмем кнопку "Таблица".

Появится новая табличная форма

Отметим тот факт, что после проведения всех вышеописанных действий панель обозревателя проекта (Solution Explorer) примет вид