Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
“Тихоокеанский государственный университет”
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
Методические указания к выполнению практического задания № 12
для студентов специальности 071900
“Информационные системы и технологии”
Хабаровск
Издательство ХГТУ
2005
УДК 681.58:681.32
Проектирование информационных систем: методические указания к выполнению практического задания № 12 для студентов специальности 071900 «Информационные системы и технологии» / сост. . – Хабаровск: Изд-во Хабар. гос. техн. ун-та, 2005. – 19 с.
Методические указания составлены на кафедре «Автоматика и системотехника». В них приводятся задание на практическую работу, требования по оформлению отчета, а также краткие общие сведения. Дается перечень рекомендованной литературы, необходимой для выполнения задания.
Печатается в соответствии с решениями кафедры "Автоматика и системотехника" и методического совета института информационных технологий.
© Хабаровский государственный
технический университет, 2005
Удаленный доступ к базе данных MySQL с помощью
компонент dbExpress Borland
Цель работы: научиться использовать интерфейс для доступа к удаленной базе данных MySQL с помощью компонент dbExpress Borland C++ Builder 6 или Delphi 7.
Практическое задание выполняется в локальной сети на рабочей станции с операционной системой Windows 95/98, 2000, XP или более поздней, с установленным сервером с операционной системой Linux версии не ниже пятой.
Порядок выполнения практического задания
1. Подготовка и допуск к работе
К выполнению практического задания допускаются студенты, которые подготовились к работе и имеют не более двух невыполненных предыдущих заданий.
Перед работой студент должен:
· предъявить преподавателю полностью оформленный отчет о предыдущей работе;
· ответить на вопросы преподавателя.
К работе не допускаются студенты, которые не выполнили одно из вышеперечисленных требований.
2. Отчёт по работе должен содержать следующее:
- Текст задания.
- Перечень всех использованных в практической работе команд и инструкций.
- Вывод по работе.
Общие сведения
Компоненты управления данными для dbExpress делятся на два вида:
1. Клиентский – Client DataSet.
2. Однонаправленныe – unidirectional dataset.
Клиентский компонент хранит выбранные записи в памяти. Это позволяет осуществлять навигацию в любом направлении, фильтровать записи, кешировать и изменять данные и т. д. Именно данный вид используется для отображения данных.
Однонаправленные запросы не кешируют данные. Передвигаться по ним можно только в направлении указанном в конструкции ORDER BY SQL запроса. Данные не могут быть изменены. Однако такие запросы предоставляют быстрый доступ к большим массивам записей.
В таблице приведено краткое описание всех компонент, представленных на вкладке dbExpress пакета Delphi 7.
Таблица. Компоненты dbExpress и их свойства
Свойства | Описание |
SQLConnection | |
Компонент для организации связи с сервером базы данных. Аналог Database в BDE. Позволяет управлять параметрами соединения с сервером БД, такие как путь к базе данных, имя и пароль пользователя и т. д. | |
Connected:boolean | Признак установления соединения с БД. True – соединение активно. |
ConnectionName: string | Имя конфигурации, содержащей параметры соединения. Аналог AliasName в TDatabase для BDE. |
DriverName: string | Имя драйвера для соединения. (DB2, Interbase, Oracle, MySQL). Устанавливается автоматически при установке свойства ConnectionName. |
KeepConnection: boolean | Поддерживать соединение с сервером БД, если в приложении нет активизированных DataSet. |
LibraryName: string | Имя библиотеки, содержащей драйвер для связи с сервером БД. |
Продолжение таблицы | |
Свойства | Описание |
LoadParamsOnConnect: boolean | Загружать ли параметры соединения, ассоциированные с именем соединения, перед установкой соединения в “run time”. Полезно в случае, когда параметры соединения могут быть изменены вне приложения или меняются в “design time”. |
LoginPrompt: Boolean | Запрашивать “логин” и “пароль” при соединении. |
Name: TComponentName | Имя компонента. |
Params: TStrings | Параметры соединения. |
TableScope: TTableScopes | Параметры видимости таблиц: TsSynonym – видеть синонимы, TsSysTable – видеть системные таблицы, TsTable – видеть таблицы, TsView – видеть просмотры. |
VendorLib: string | Имя библиотеки с клиентской частью БД. |
SQLDataSet | |
Однонаправленный компонент общего назначения. | |
Active: boolean | Активность компонента. |
CommandText: string | Текст команды (запроса) на получение или манипуляции с данными. |
CommandType: TSQLCommandType | Тип: CtQuery – SQL запрос, CtTable – таблица, автоматически генерирует запрос на выборку всех записей по всем полям, CtStoredProc – хранимая процедура. |
DataSource: TDataSource | Источник данных для мастер DataSet. |
MaxBlobSize: integer | Максимальный размер BLOB полей. |
ObjectView: Boolean | Включить иерархическое представление для вложенных полей. |
ParamCheck:Boolean | Обновлять список параметров при изменении текста команды |
Params:Tparams | Список параметров команды. |
SortFieldNames: string | Список полей для сортировки, поля разделяются точкой с запятой. Действует для CommandType ctTable. |
SQLConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
Tag: integer | Тэг. |
SQLQuery | |
Запрос к БД (однонаправленный) | |
Active: boolean | Активность запроса. |
Продолжение таблицы | |
Свойства | Описание |
DataSource: TDataSource | Источник данных для мастер DataSet. |
MaxBlobSize: integer | Максимальный размер BLOB полей. |
ObjectView: Boolean | Включить иерархическое представление для вложенных полей. |
ParamCheck:Boolean | Обновлять список параметров при изменении текста запроса. |
Params:Tparams | Список параметров запроса. |
SQL:TStrings | Текст запроса. |
SQLConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
Tag: integer | Тэг. |
SQLStoredProc | |
Хранимая процедура (в случае получения данных – однонаправленная) | |
Active: boolean | Активность хранимой процедуры. |
MaxBlobSize: integer | Максимальный размер BLOB полей. |
ObjectView: Boolean | Включить иерархическое представление для вложенных полей. |
ParamCheck:Boolean | Обновлять список параметров при изменении процедуры. |
Params:Tparams | Список параметров процедуры. |
SQLConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
Tag: integer | Тэг. |
SQLTable | |
Таблица базы данных (однонаправленный запрос) | |
Active: boolean | Активность таблицы. |
IndexFieldNames: string | Список полей сортировки (через точку с запятой). |
IndexName: string | Имя индекса сортировки. Возможно использование либо IndexName или IndexFieldNames. |
MasterSource: TdataSource | Мастер источник данных для организации отношений главный-подчиненный (master-detail). |
MasterFields:string | Поля связи главный-подчиненный. |
MaxBlobSize: integer | Максимальный размер BLOB полей. |
ObjectView: Boolean | Включить иерархическое представление для вложенных полей. |
SQLConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
TableName: string | Имя таблицы БД, из которой будут выбраны данные. |
Tag: integer | Тэг. |
Продолжение таблицы | |
Свойства | Описание |
SQLMonitor | |
Организация наблюдения за работой компонентов доступа к данным | |
Active: boolean | Активность монитора. |
AutoSave: Boolean | Автоматическое сохранения журнала событий в файл, указанном в FileName. |
FileName: string | Имя файла для хранения журнала событий. |
SQLConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
Tag: integer | Тэг. |
TraceList:Tstrings | Журнал событий. |
SQLClientDataSet | |
Клиентский DataSet общего назначения | |
Active: boolean | Активность DataSet. |
Aggregates: Taggregates | Список доступных агрегатов. |
AggregatesActive: boolean | Вычисление агрегатов. |
AutoCalcFields: boolean | Генерировать событие OnCalcFields и обновлять Lookup поля: True: · при открытии DataSet, · при переходе DataSet в состояние dsEdit, · передача фокуса ввода другому компоненту или другому столбцу (для сетки) при наличии изменений в текущей ячейке. False · при открытии DataSet, · при переходе DataSet в состояние dsEdit, · запись извлекается из БД |
CommandText: string | Текст команды для выполнения (SQL запрос). При установке св-ва FileName данное св-во игнорируется. При сбросе флага poAllowCommandText в св-ве Options текст команды также игнорируется. |
CommandType: TSQLCommandType | Тип DataSet: CtQuery – SQL запрос, CtTable – таблица, автоматически генерирует запрос на выборку всех записей по всем полям, CtStoredProc – хранимая процедура. |
ConnectionName: string | Имя конфигурации, содержащей параметры соединения. Аналог AliasName в TDatabase для BDE. |
Constraints: TConstraints | Ограничения на значения на уровне одной записи. |
Окончание таблицы | |
Свойства | Описание |
DBConnection: TSQLConnection | Имя компонента SQLConnection через который будет происходить работа с БД. |
DisableStringTrim: boolean | Удалять конечные пробелы в строковых полях при их вставке БД. |
FetchOnDemand: boolean | Получать данные по мере необходимости. |
FieldDefs: TFieldDefs | Определения полей. |
FileName: string | Имя файла для сохранения кеша данных. |
Filter: string | Фильтр. |
Filtered: Boolean | Включение фильтрации. |
FilterOptions: TFilterOptions | Параметры фильтрации. |
IndexDefs: TindexDefs | Определения индексов. |
IndexFieldNames: string | Список полей сортировки (через точку с запятой). |
IndexName: string | Имя индекса сортировки. Возможно использование либо IndexName либо IndexFieldNames. |
MasterSource: TdataSource | Мастер источник данных для организации отношений главный-подчиненный (master-detail). |
MasterFields:string | Поля связи главный-подчиненный. |
ObjectView: Boolean | Включить иерархическое представление для вложенных полей. |
Options: TProviderOptions | Параметры работы с данными. |
PacketRecord: integer | Количество записей в одном пакете данных: · 1 – все, · >0 – количество, · 0 – включать в пакет только метаданные. |
Params: Tparams | Значение параметров для выборки данных. |
ReadOnly: Boolean | Доступ только для чтения. |
Tag: integer | Тэг. |
UpdateMode: TUpdateMode | Способ поиска записи при записи изменений: UpWhereAll – использовать все поля, UpWhereChanged – ключевые поля + старые значения измененных полей, UpWhereKeyOnly – только ключевые поля. |
Ниже приводится порядок выполнения части практической работы для примера, описание которого находится в папке …/laba12/Example12. Практическое задание выполняется в среде Delphi 7 (или С++ Builder 6). Перед работой с проектом необходимо в папку “C:\Program Files\Borland\Delphi7\Bin” и в папку с файлами проекта скопировать файл библиотеки “libmysql. dll” из папки “C:\Program Files\MySQL\AdminMySQL” (это необходимо для обновления версии библиотеки). После этого порядок выполнения работы может быть следующим.
1. Запустить Delphi 7.
2. Создать новый проект.
3. На главной форме разместить следующие компоненты доступа к базе данных:
- из вкладки dbExpress:
· TSQLConnection,
· TSQLTable,
· TSQLDataSet
- и из вкладки DataAccess:
· TDataSource.
4. Компонент SQLConnection1 настраивают следующим образом:
· Изменяют свойство “Params”: HostName – записывают IP-адрес удаленного сервера, на котором установлен сервер MySQL (10.10.146.1), DataBase – указывают имя существующей базы данных (laba12), User_Name – указывают имя пользователя для базы данных (root), Password – пароль для указанного пользователя.
· В свойстве “ConnectionNames” выбирают из списка MySQLConnection.
· В случае правильной установки всех свойств и наличия на указанном компьютере указанной базы данных в свойстве Connected можно будет в качестве теста установить значение True, в противном случае это сделать будет невозможно.
На рис. 1 показан вид инспектора объектов для компоненты SQLConnection1.

Рис. 1. Инспектор объектов для SQLConection1
5. Компонент SQLTable1 настраивают следующим образом:
· В свойстве SQLConnection выбирают из списка установленный ранее компонент SQLConnection1.
· В свойстве TableName выбирают из списка (или записывают) имя существующей в базе данных таблицы (laba12).
На рис. 2. показан вид инспектора объектов для компоненты SQLTable1.

Рис. 2. Вид инспектора объектов для SQLTable1
6. Вид инспектора объектов для компоненты DataSource1 показан на рис. 3. Для этой компоненты устанавливают свойство “DataSet”, выбрав из списка запись “SQLTable1”.

Рис. 3. Вид инспектора объектов для DataSource
7. Компоненту SQLDataSet1 настраивают следующим образом:
· В свойстве “SQLConnection” выбирают из списка “SQLConnection1”.
· В свойстве “CommandType” выбирают из списка “ctQuery”.
· В свойстве “CommandText” записывают или с помощью “CommandText Editor” устанавливают значение “select * from laba12”.
Вид инспектора объектов для компоненты SQLDataSet1 показан на рис. 4.

Рис. 4. Вид инспектора объектов для SQLDataSet1
8. В дополнение к установленным компонентам доступа к базе данных установить следующие компоненты для отображения значений из полей таблицы и управления проектом:
· DBText – 2 шт.
· DBImage – 1 шт.
· Image – 1 шт.
· DBMemo – 1 шт.
· DBNavigator – 1 шт.
· Button – 2 шт.
Общий вид формы с установленными компонентами показан на рис. 5.

Рис. 5. Форма с установленными компонентами
9. Для компонент DBText1, DBtext2, DBImage1 и DBMemo1 изменяют два свойства – это “DataSource” и “DataField”. Свойству “DataSource” присваивают значение “DataSource1”, а свойству “DataField” – имя соответствующего поля таблицы “laba12”.
10. Вид инспектора объектов для компоненты Image1 показан на рис. 6. Необходимым условием правильной работы приложения является заполнения свойства “picture” из “Редактора Рисунка”.

Рис. 6. Инспектор объектов для Image1
11. Нажатием кнопки Button1 “Соединиться с БД” следует активировать все компоненты соединения с базой данных и заполнить форму данными из первой записи БД:
SQLConnection1.Connected := True;
SQLDataSet1.Active := True;
SQLTable1.Active := True;
Stream1 := SQLDataSet1.CreateBlobStream(SQLDataSet1.FieldByName('photo') as TBlobField, bmRead);
try
Image1.Picture. Graphic. LoadFromStream(Stream1);
finally
Stream1.Free;
end;
Button1.Enabled:=False;
Примечание: переменная Stream1 объявляется в разделе “var” модуля как Stream1 : TStream;
12. Кнопка “Закончить” закрывает приложение.
13. Для обновления компонент, не являющихся компонентами из вкладки “Data Controls” (в рассматриваемом примере это Image1), необходима специальная процедура, например обработчик событий от “DBNavigator1”:
case Button of
nbNext:
begin
SQLDataSet1.Next;
Stream1 := SQLDataSet1.CreateBlobStream(SQLDataSet1.FieldByName('photo') as TBlobField, bmRead);
try
Image1.Picture. Graphic. LoadFromStream(Stream1);
finally
Stream1.Free;
end;
end;
nbLast:
begin
SQLDataSet1.Last;
Stream1 := SQLDataSet1.CreateBlobStream(SQLDataSet1.FieldByName('photo') as TBlobField, bmRead);
try
Image1.Picture. Graphic. LoadFromStream(Stream1);
finally
Stream1.Free;
end;
end;
end;
Примечание: переменная “Button” передается как параметр процедуры, текст которой приведен выше.
15. Добавить в проект новую форму, обеспечить её вызов из главной формы, разместить на ней компоненты, необходимые для выполнения пункта 2 задания на практическую работу в полном объеме.
16. Откомпилировать программу, убедиться в её работоспособности, продемонстрировать работу программы преподавателю.
17. Составить отчет по лабораторной работе.
Задание на практическую работу
1. Для выполнения работы рекомендуется использовать БД, созданную в предыдущих лабораторных работах.
2. Разработать программу удаленного доступа БД MySQL, используя компоненты dbExpress. Программа должна позволять выполнять следующие функции:
· открывать базу данных, если она уже существует или создавать новую базу данных,
· просматривать все записи в таблице,
· делать выборку с сортировкой записей по заданному полю,
· делать выборку по значению одного из полей таблицы.
Содержание отчета
1. Цель работы.
2. Описание и исходные тексты (с комментариями) созданных процедур для работы с БД.
3. Выводы.
Контрольные вопросы
1. Какие компоненты нужны для соединения с БД MySQL.
2. Назначение компонент SQLDataSet, SQLTable.
3. Какие свойства компонент отображения данных из БД необходимо изменять.
4. Что такое однонаправленные запросы.
5. Как обеспечивается возможность редактирования данных в БД MySQL.
Библиографический список
1. Документация к СУБД MySQL. – Электр. дан. Режим доступа: http://www. mysql. org.
2. Практикум к лабораторным работам по дисциплине «Корпоративные информационные системы. – Электр. дан. Режим доступа: \\aisnt\aisw\kurs4\kis.
3. Иллюстрированный самоучитель по Delphi 7 для профессионалов. – Электр. дан. Режим доступа:
http://epic. /info/PROGR/Delphi7%20prof/index. html.
ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ
Методические указания к выполнению практического задания № 12
для студентов специальности 071900 «Информационные системы и технологии»
Конопелько Геннадий Константинович
Главный редактор
Редактор __________
Компьютерная верстка
Подписано в печать. Формат 60х84 1/16.
Бумага писчая. Гарнитура “Таймс”. Печать офсетная. Усл. печ. л. ____.
Тираж 100 экз. Заказ.
Издательство Хабаровского государственного технического университета.
Хабаровск, .
Отдел оперативной полиграфии издательства
Хабаровского государственного технического университета.
Хабаровск, .


