Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования “Тихоокеанский государственный университет” ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ Методические указания к выполнению практического задания № 12 для студентов специальности 071900 “Информационные системы и технологии” Хабаровск Издательство ХГТУ 2005 2 УДК 681.58:681.32 Проектирование информационных систем: методические указания к выполнению практического задания № 12 для студентов специальности 071900 «Информационные системы и технологии» / сост. Г. К. Конопелько. – Хабаровск: Изд-во Хабар. гос. техн. ун-та, 2005. – 19 с. Методические указания составлены на кафедре «Автоматика и системотехника». В них приводятся задание на практическую работу, требования по оформлению отчета, а также краткие общие сведения. Дается перечень рекомендованной литературы, необходимой для выполнения задания. Печатается в соответствии с решениями кафедры "Автоматика и системотехника" и методического совета института информационных технологий. © Хабаровский государственный технический университет, 2005 3 Удаленный доступ к базе данных MySQL с помощью компонент dbExpress Borland Цель работы: научиться использовать интерфейс для доступа к удаленной базе данных MySQL с помощью компонент dbExpress Borland C++ Builder 6 или Delphi 7. Практическое задание выполняется в локальной сети на рабочей станции с операционной системой Windows 95/98, 2000, XP или более поздней, с установленным сервером с операционной системой Linux версии не ниже пятой. Порядок выполнения практического задания 1. Подготовка и допуск к работе К выполнению практического задания допускаются студенты, которые подготовились к работе и имеют не более двух невыполненных предыдущих заданий. Перед работой студент должен: предъявить преподавателю полностью оформленный отчет о предыдущей работе; ответить на вопросы преподавателя. К работе не допускаются студенты, которые не выполнили одно из вышеперечисленных требований. 2. Отчёт по работе должен содержать следующее: - Текст задания. - Перечень всех использованных в практической работе команд и инструкций. - Вывод по работе. 4 Общие сведения Компоненты управления данными для 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 Имя библиотеки, содержащей драйвер для связи с сервером БД. 5 Продолжение таблицы Свойства Описание 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: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. Tag: integer Тэг. SQLQuery Запрос к БД (однонаправленный) Active: boolean Активность запроса. 6 Продолжение таблицы Свойства Описание DataSource: TDataSource Источник данных для мастер DataSet. MaxBlobSize: integer Максимальный размер BLOB полей. ObjectView: Boolean Включить иерархическое представление для вложенных полей. ParamCheck:Boolean Обновлять список параметров при изменении текста запроса. Params:Tparams Список параметров запроса. SQL:TStrings Текст запроса. SQLConnection: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. Tag: integer Тэг. SQLStoredProc Хранимая процедура (в случае получения данных – однонаправленная) Active: boolean Активность хранимой процедуры. MaxBlobSize: integer Максимальный размер BLOB полей. ObjectView: Boolean Включить иерархическое представление для вложенных полей. ParamCheck:Boolean Обновлять список параметров при изменении процедуры. Params:Tparams Список параметров процедуры. SQLConnection: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. Tag: integer Тэг. SQLTable Таблица базы данных (однонаправленный запрос) Active: boolean Активность таблицы. IndexFieldNames: string Список полей сортировки (через точку с запятой). IndexName: string Имя индекса сортировки. Возможно использование либо IndexName или IndexFieldNames. MasterSource: Мастер источник данных для организации TdataSource отношений главный-подчиненный (master-detail). MasterFields:string Поля связи главный-подчиненный. MaxBlobSize: integer Максимальный размер BLOB полей. ObjectView: Boolean Включить иерархическое представление для вложенных полей. SQLConnection: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. TableName: string Имя таблицы БД, из которой будут выбраны данные. Tag: integer Тэг. 7 Продолжение таблицы Описание Свойства SQLMonitor Организация наблюдения за работой компонентов доступа к данным Active: boolean Активность монитора. AutoSave: Boolean Автоматическое сохранения журнала событий в файл, указанном в FileName. FileName: string Имя файла для хранения журнала событий. SQLConnection: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. 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: Тип DataSet: TSQLCommandType CtQuery – SQL запрос, CtTable – таблица, автоматически генерирует запрос на выборку всех записей по всем полям, CtStoredProc – хранимая процедура. ConnectionName: string Имя конфигурации, содержащей параметры соединения. Аналог AliasName в TDatabase для BDE. Constraints: TConstraints Ограничения на значения на уровне одной записи. 8 Окончание таблицы Свойства Описание DBConnection: Имя компонента SQLConnection через который TSQLConnection будет происходить работа с БД. 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). 9 Перед работой с проектом необходимо в папку “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 – пароль для указанного пользователя. В свойстве “Driver” выбирают из списка MySQLConnection для старых версий СУБД или DevartMySQL для Delphi 7 или DevartMySQLDirect для XE4. 10 В свойстве “ConnectionNames” выбирают из списка MySQLConnection для старых версий СУБД или DevartMySQL для Delphi 7 или DevartMySQLDirect для XE4. В случае правильной установки всех свойств и наличия на указанном компьютере указанной базы данных в свойстве Connected можно будет в качестве теста установить значение True, в противном случае это сделать будет невозможно. На рис. 1 показан вид инспектора объектов для компоненты SQLConnection1. Рис. 1. Инспектор объектов для SQLConection1 5. Компонент SQLTable1 настраивают следующим образом: В свойстве SQLConnection выбирают из списка установленный ранее компонент SQLConnection1. В свойстве TableName выбирают из списка (или записывают) имя существующей в базе данных таблицы (laba12). 11 На рис. 2. показан вид инспектора объектов для компоненты SQLTable1. Рис. 2. Вид инспектора объектов для SQLTable1 6. Вид инспектора объектов для компоненты DataSource1 показан на рис. 3. Для этой компоненты устанавливают свойство “DataSet”, выбрав из списка запись “SQLTable1”. 12 Рис. 3. Вид инспектора объектов для DataSource 7. Компоненту SQLDataSet1 настраивают следующим образом: В свойстве “SQLConnection” выбирают из списка выбирают из списка “SQLConnection1”. В свойстве “CommandType” “ctQuery”. В свойстве “CommandText” записывают или с помощью “CommandText Editor” устанавливают значение “select * from laba12”. Вид инспектора объектов для компоненты SQLDataSet1 показан на рис. 4. 13 Рис. 4. Вид инспектора объектов для SQLDataSet1 8. В дополнение к установленным компонентам доступа к базе данных установить следующие компоненты для отображения значений из полей таблицы и управления проектом: DBText – 2 шт. DBImage – 1 шт. Image – 1 шт. DBMemo – 1 шт. DBNavigator – 1 шт. Button – 2 шт. Общий вид формы с установленными компонентами показан на рис. 5. 14 Рис. 5. Форма с установленными компонентами 9. Для компонент DBText1, DBtext2, DBImage1 и DBMemo1 изменяют два свойства – это “DataSource” и “DataField”. Свойству “DataSource” присваивают значение “DataSource1”, а свойству “DataField” – имя соответствующего поля таблицы “laba12”. 10. Вид инспектора объектов для компоненты Image1 показан на рис. 6. Необходимым условием правильной работы приложения является заполнения свойства “picture” из “Редактора Рисунка”. 15 Рис. 6. Инспектор объектов для Image1 11. Нажатием кнопки Button1 “Соединиться с БД” следует активировать все компоненты соединения с базой данных и заполнить форму данными из первой записи БД: SQLConnection1.Connected := True; SQLDataSet1.Active := True; SQLTable1.Active := True; Stream1 := SQLDataSet1.CreateBlobStream(SQLDataSet1.FieldByName('photo') as TBlobField, bmRead); 16 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') TBlobField, bmRead); := as 17 try Image1.Picture.Graphic.LoadFromStream(Stream1); finally Stream1.Free; end; end; end; Примечание: переменная “Button” передается как параметр процедуры, текст которой приведен выше. 15. Добавить в проект новую форму, обеспечить её вызов из главной формы, разместить на ней компоненты, необходимые для выполнения пункта 2 задания на практическую работу в полном объеме. 16. Откомпилировать программу, убедиться в её работоспособности, продемонстрировать работу программы преподавателю. 17. Составить отчет по лабораторной работе. Задание на практическую работу 1. Для выполнения работы рекомендуется использовать БД, созданную в предыдущих лабораторных работах. 2. Разработать программу удаленного доступа БД MySQL, используя компоненты dbExpress. Программа должна позволять выполнять следующие функции: открывать базу данных, если она уже существует или создавать новую базу данных, просматривать все записи в таблице, делать выборку с сортировкой записей по заданному полю, делать выборку по значению одного из полей таблицы. 18 Содержание отчета 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.centersti.com/info/PROGR/Delphi7%20prof/index.html. 19 ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ Методические указания к выполнению практического задания № 12 для студентов специальности 071900 «Информационные системы и технологии» Конопелько Геннадий Константинович 20 Главный редактор Л. А. Суевалова Редактор __________ Компьютерная верстка Г. К. Конопелько Подписано в печать . Формат 60х84 1/16. Бумага писчая. Гарнитура “Таймс”. Печать офсетная. Усл. печ. л. ____. Тираж 100 экз. Заказ . Издательство Хабаровского государственного технического университета. 680035, Хабаровск, ул. Тихоокеанская, 136. Отдел оперативной полиграфии издательства Хабаровского государственного технического университета. 680035, Хабаровск, ул. Тихоокеанская, 136.