- •Введение в курс “Базы данных”
- •Классификация бд по способу хранения данных
- •Факультет
- •Классификация бд по их использованию
- •Реляционные бд (ms Access)
- •Типы полей в реляционных бд
- •Связи между таблицами
- •Поддержка целостности данных
- •Нормализация бд
- •Неформальные методы приведения таблиц к третьей нормальной форме
- •Операции в бд (vba) Операции над отношениями/таблицами
- •Операции над записями
- •Типы данных используемых в sql
- •Операторы манипулирования данными Оператор Select
- •Группировка
- •Объединение таблиц
- •Параметры
- •Перекрёстные запросы
- •Обновление данных (запрос Update)
- •Удаление данных (запрос Delete)
- •Подчинённые запросы
- •Создание таблиц
- •Добавление новых полей
- •Технология разработки программного обеспечения, использующего базы данных
- •Доступ к данным в Visual Basic 6.0
- •Работа с записями
- •Создание многоуровневых приложений
- •Д Fill оступ к данным в c# (Visual Studio 2005)
- •Создание отчётов
- •Olap технологии. Xml язык
- •Клиент-серверные системы
- •Триггер
- •Программирование триггера
Доступ к данным в Visual Basic 6.0
Для подключения к своему проекту БД необходимо, чтобы на панели инструментов Toolbox были доступны компоненты: ADO Data Control, DataGrid, DataCombo и некоторые другие. В среде VB 6.0 основным компонентом для доступа к данным является ADODC: в него включено и Connection, и DataSet, и Datasource. Его основные свойства:
ConnectionString – строка для доступа к БД. При вызове мастера создания строки подключения пользователю предоставляется возможность выбора
Use Link FileUse ODBC Source – при этом выбирается один из псевдонимов БД, зарегистрированных на данном компьютере.
Use Connection String – для прямого подсоединения к БД. Для этого необходимо нажать на Build и выполнить все действия пошагово (для подключения БД MS Access выбрать источник драйвера MS Jet 4.0).
Данное свойство рекомендуется заполнять исключительно с помощью мастера, а не вручную.
RecourdSource – свойство, в которое записывается таблица, подключаемая к ADODC. Каждый источник данных ADODC подключается только к одной таблице. При этом выбирается тип источников данных для ADODC:
SQL запрос, возвращающий данные (необходимо написать текст запроса).
Таблица из БД.
Хранимая процедура (Stored Procedure)
Для отображения записей, содержащихся в ADODC, используются некоторые стандартные компоненты:
Label. В нём отражается значение выбранного поля для активной записи. Свойства, используемые для подключения данных:
Data Source – имя компонента, к которому подключена БД (ADODC).
Data Field – имя поля из таблицы, которое будет отображаться в надписи.
Text. Позволяет выводить содержимое поля и редактировать это содержимое.
Data Source – имя компонента, к которому подключена БД (ADODC).
Data Field – имя поля из таблицы, которое будет отображаться в текстовом поле.
Данные поля хранятся в свойстве Text.
Работа с записями
Перемещение по записям может осуществляться следующим образом:
С помощью соответствующих кнопок на ADODC.
С помощью программной обработки нажатия пользовательских кнопок: Me.Adodc1.RecordSet.MoveNext – перемещение на следующую запись. Me.Adodc1.RecordSet.MovePreview – перемещение на предыдущую запись. Me.Adodc1.RecordSet.MoveLast – перемещение на последнюю запись. Me.Adodc1.RecordSet.MoveFirst – перемещение на первую запись. Me.Adodc1.RecordSet.EOF –равен true,если текущая запись находится после последней. Me.Adodc1.RecordSet.BOF – равен true,если текущая запись находится перед первой.
Добавление записи осуществляется командой Me.Adodc1.RecordSet.AddNew. При этом запись добавляется только в Dataset приложения, а не в саму БД. Для того чтобы обратиться к полю активной записи, необходимо ввести следующую конструкцию: Me.Adodc1.RecordSet.Fields(“НазваниеПоля”) = Значение;
Чтобы занести изменения в БД, необходимо выполнить следующие команды:
Me.Adodc1.RecordSet.Update – записывает во временную копию БД.
Me.Adodc1.RecordSet.UpdateBach – сохраняет значения в БД.
Me.Adodc1.RecordSet.Refresh – перечитывает БД.
Me.Adodc1.RecordSet.ReQuery – перезапрашивает данные, заново запускает запрос, если форма работает с запросом.
Для отображения записей из таблицы БД существует стандартный компонент DataGrid. Подключить его к ADODC можно с помощью свойства DataSource. Для настройки DataGrid удобнее использовать диалоговое окно Properties, которое вызывается из контекстного меню этого элемента. Редактирование колонок происходит на вкладке Columns, где можно установить заголовки столбцов и привязать к ним данные из таблицы. Для добавления или удаления колонок необходимо в контекстном меню выбрать Edit, а затем открыть контекстное меню ещё раз и нажать на кнопку Append( или Insert) для добавления новых столбцов, Delete – для их удаления.
Сортировка записей осуществляется в компоненте ADODC. Для организации стандартного интерфейса сортировки таблицы (при нажатии на заголовок столбца) необходимо использовать событие DataGrid HeadClick. В обработчике этого события необходимо прописать:
Me.Adodc1.RecordSet.Sort = “Название поля”
Часто в визуальных компонентах работы с БД используется поле со списком. В VB 6.0 этот компонент называется DataCombo при работе с ADO. Основные свойства этого компонента:
RowSource – источник данных для вывода на экран (ADODC).
ListField – имя поля из RowSource, которое будет отображаться на экране.
DataSource – источник данных, в который будет производиться запись (ADODC).
DataField – поле из DataSource, в которое будет записываться выбранное значение.
BoundColumn – поле из RowSource, которое будет записываться в DataSource.
Для фильтрации данных используется соответствующее свойство ADODC:
Me.Adodc1.RecordSet.Filter = “условие фильтра”
Отчёты в VB 6.0
Для использования отчётов необходимо произвести следующие действия:
Подключить компонент DataEnvironment: Project → Add DataEnvironment. Если этого пункта меню нет в списке, то нужно выбрать пункт Components, вкладка Designers и отметить компоненты DataEnvironment и DataReport. Если эти компоненты отсутствуют и здесь, то необходимо добавить их в пункте меню References. Затем необходимо добавить Connection (или использовать существующий) и подключить к нему БД с помощью диалогового окна Properties из контекстного меню. Затем в этот Connection добавляется элемент Command, к которому подключается таблица или запрос, на котором будет основан отчёт.
Подключить компонент DataReport, который представляет собой непосредственно отчёт. В свойствах этого отчёта указывается DataSource (в нашем случае это DataEnvironment) и DataMember (это Command, созданный ранее). Основные поля отчёта:
Заголовок страницы,
Заголовок страницы,
Заголовок полей,
Содержание отчёта – область данных,
Примечания,
Имеется возможность добавить также заголовок группы, область данных группы, примечание группы при создании группировки.
Для добавления данных в поле данных используется компонент Text, в свойствах (DataField) которого указывается поле, которое будет в нём отображаться. Кроме того отчёты в VB 6 допускают вычисляемые поля, расположенные в примечаниях (компонент Function). В нём указывается поле (DataField), по которому производится вычисление, и вид агрегирования (свойство FunctionType). Для создания группировки необходимо в DataEnvironment → Command добавить Children Command, в котором содержаться данные группировки.
Доступ к данным в C++ Builder
Для организации доступа к данным в C++ Builder используется компонент DataModule – невидимая форма доступа к данным, на которой располагаются основные компоненты работы с БД. Её добавление в проект осуществляется следующим образом: File → New → DataModule. В C++ Builder имеется несколько вкладок с компонентами, предназначенными для работы с данными. Одной из них является Data Access, основные компоненты которой приведены ниже:
DataSource обеспечивает синхронность работы таблицы с визуальными компонентами. Этот компонент располагается на форме вместе с Grid.
ClientDataSet используется для работы с удалёнными БД. Его основные свойства: имя компьютера/программы-сервера и имя провайдера, поставщика данных. В данном случае обращение к программе осуществляется через IP-адрес компьютера и имя провайдера.
DataSetProvider – компонент на сервере, который обеспечивает доступ от реальных клиентских программ к БД.
XML Transformer – преобразует набор данных в XML текст.
На вкладке ADO расположены основные компоненты, используемые для доступа к БД.
ADO Connection – предназначен для подключения к БД. Его необходимо располагать в Data Module. Основные свойства:
ConnectionString – строк доступа к БД. Подключение осуществляется аналогично вышеописанным примерам. Для того чтобы осуществить подключение к БД, расположенной в одном каталоге с проектом, необходимо удалить полный путь к файлу и оставить только его название.
Connected – позволяет подключать приложение к БД и отключать от неё.
LoginPrompt – запрашивать ли при подключении к БД логин и пароль пользователя.
ADO Command – используется для выполнения SQL команд для ADO. Выполняет запрос (управляющий), не возвращающий набора данных. Основные свойства:
Command Text – текст запроса.
Connection – созданный ранее ADO Connection.
Connection String – строка для подключения вручную.
Parameters – параметры для запроса.
ADO DataSet – базовый компонент, который позволяет хранить любые данные.
ADO Table – таблица, Dataset которой хранит данные. Основные данные: Connection, TableName – имя таблицы.
При организации простого однопользовательского приложения на визуальной форме из всех вышеперечисленных компонентов размещается DataSource. Все остальные размещаются на DataModule: ADO Connection, ADO Table.
Сортировки, как таковой, в C++ Builder нет. В нём создаются индексированные поля по требуемым критериям:
DataModule->AdoTable->IndexFieldNames = ”имяПоля”.
Если в таблице уже есть индексы, то используется имя индекса:
DataModule->AdoTable->IndexName = ”имяИндекса”.
Для создания фильтра используется соответствующее свойство ADO Table:
DataModule->AdoTable->Filter =”условие фильтра”.
DataModule->AdoTable->Filtered = true.
Условие фильтра аналогично условию в Access.
Визуальные компоненты для работы с БД содержаться на вкладке DataControl.
Поле со списком может быть добавлено в компонент ADO Table. Для этого необходимо выбрать Fields Editor из контекстного меню. В нём необходимо добавить все существующие поля. Затем добавить новое поле, в свойствах которого выбрать тип Lookup.
KeyField – поле, содержащее значение в основной таблице, куда будет производиться запись.
DataSet – это ADOTable, из которой данные будут выводится на экран.
Lookup Keys – ключевое поле из DataSet, которое записывается в KeyField.
Result Field – поле из DataSet, которое будет отображаться на экране.
Чтобы создать поле со списком, необходимо сделать таблицу неактивной (свойство Active = false). Если БД была подключена корректно, то на форме (в DBGrid) должны отразиться записи из таблицы.
Отчёты в C++ Builder
Существует несколько компонент для создания отчётов в C++ Builder. Наиболее простым в использовании является компонент QReport (Quick Report), который расположен на одноимённой вкладке (QReport – расположены все компоненты для работы с данным видом отчётов). Чтобы создать отчёт необходимо:
Создать форму.
Расположить на ней источник данных, который потребуется в отчёте.
Расположить на ней элемент QReport и подключить его к источнику данных. Для этого необходимо прописать соответствующие include директивы в заголовочном файле формы с отчётом.
Чтобы программно показать отчёт, нужно выполнить следующую команду:
Form->QuickReport1->Preview();
Для формирования отчёта необходимо на нём расположить полосы QRBand. Её тип по умолчанию (свойство BandType) – Title – заголовочная область отчёта. Для того чтобы сформировать другие области отчёта, необходимо расположить соответствующее количество полос и изменить их тип в соответствии с типом данных.
Title – заголовок отчёта.
Detail – данные отчёта.
GroupFooter – примечание группы.
Summary – примечания отчёта.
SubDetail – внутренняя группировка.
Для формирования отчёта на полосу Detail располагается компонент DBText, у которого устанавливается свойство DataSet (таблица или запрос, на основании которого строится отчёт), DataField (поле, которое будет отображаться в этом элементе). Для создания вычисляемых полей используется компонент QRExpress, у которого устанавливается свойство Expression. Чтобы данные в отчёте изменялись при изменении информации в БД, нужно каждый раз при загрузке отчёта перезагружать данные в его источнике (ADOTable или ADOQuery):
AdoTable->Open();
…
AdoTable->Close();
Для группировки данных в отчёте используется элемент QRGroup.