Практическая работа 2. Подключение к бд средствами Delphi. Цель подключение к бд microsoft Access средствами Delphi ado
Скачать 0.6 Mb.
|
Практическая работа №2. Подключение к БД средствами Delphi. Цель: подключение к БД Microsoft Access средствами Delphi ADO. Теоретическая часть Компонент Form Action - определяет объект TAction. Это объект служит для быстрой привязки действий к компонентам, в особенности - к пунктам меню и панелям инструментов. Но может быть привязан и к форме. Для управления TAction служат редакторы TActionList со страницы Standard и TActionManager со страницы Additional. ActiveControl - определяет элемент, который имеет в данный момент фокус ввода. Если выбрать какой-либо объект во время разработки (design- time), то при запуске приложения этот объект и будет иметь фокус ввода. Также свойство может быть полезно и во время выполнения (run-time) - можно узнать, какой объект "держит" фокус в данный момент, а также можно переместить фокус на любой из объектов. Пример: разместим на форме 2 кнопки - Button1 и Button2, а также TTimer (страница System). Выбрав элемент Timer1, дважды щёлкнем в Инспекторе объектов напротив надписи OnTimer на вкладке Events, т.е. создадим обработчик события и напишем следующее: ActiveControl: =Button2; Теперь, запустив программу, каждую секунду фокус будет перемещаться на Button2. Align - определяет выравнивание формы на экране. Свойство принимает одно из следующих значений: • alBottom - по нижнему краю; • alClient - вся пользовательская (клиентская) область; • alCustom - выравнивание определяется вызовом методом объекта- родителя; • alLeft - по левому краю; • alNone - без выравнивания; • alRight - по правому краю; • alTop - по верхнему краю. AlphaBlend - включает/выключает прозрачность формы. AlphaBlendValue - задаёт степень непрозрачности формы: 0 - форма полностью невидима, 255 - полностью видима. Прозрачность активируется только при установке свойства AlphaBlend в True. Anchors - определяет направления, по которым компоненты "привязываются" к форме. Пример: если установить у формы значения akLeft и akRight этого свойства в True, и точно также сделать у кнопки, то при изменении ширины формы размер кнопки (ширина) также будет изменяться. AutoScroll - включает автоматическое появление полос прокрутки (Scroll bars) на форме, когда размеров формы недостаточно для отображения всех элементов. AutoSize - включает автоматическое изменение размеров формы согласно позициям размещённых на ней элементов. BiDiMode - определяет двунаправленное отображение элемента. В некоторых языках письмо осуществляется не слево-направо, а наоборот. Это свойство создано как раз для этой цели. BorderIcons - определяет множество кнопок, которые отображаются в заголовке окна: • biSystemMenu - единственный элемент, который не является кнопкой - отвечает за системное меню окна, которое вызывается комбинацией клавиш [Ак]+[Пробел]. • biMinimize - кнопка сворачивания (минимизации) окна; • biMaximize - кнопка разворачивания окна; • biHelp - кнопка справки. Если хотя бы одна из кнопок сворачивания и разворачивания включена, то независимо от состояния другой, отображаются обе (но вторая естественно неактивна). Если выключены обе, они не отображаются вообще. Это не зависит от Delphi - так устроена ОС Windows. BorderStyle - определяет поведение границ окна и общий тип окна: • bsDialog - диалоговое окно (из кнопок - только "Закрыть", иконки в заголовке окна нет); • bsNone - "чистый лист" (отсутствие у окна границ и заголовка) - применяется обычно для создания заставок во время запуска программы; • bsSingle - обычное окно, но с запретом изменения размеров; • bsSizeable - обычное окно (по умолчанию) - размеры формы можно изменять; • bsSizeToolWin - упрощённое окно с уменьшенным заголовком; • bsToolWindow - упрощённое окно с уменьшенным заголовком без возможности изменения размеров. BorderWidth - ширина границы окна в пикселах. Граница является невидимой и расположена в пользовательской части формы. Caption - текст заголовка формы. ClientHeight, ClientWidth - размер клиентской (пользовательской) части формы, т.е. той, на которой располагаются компоненты. Color - цвет формы. Constraints - определяет минимальные и максимальные размеры высоты и ширины формы в пикселах. 0 - любое значение, т.е. без ограничений. Ctl3D - свойство определяет SD-вид формы. При выключенном - "плоское" изображение. Cursor - курсор мыши в тот момент, когда он находится над формой. DefaultMonitor - определяет, на каком мониторе появится форма. Имеет смысл применять это свойство только при наличии более, чем одного монитора (например, если несколько экранов). DockSite, DragKing и DragMode - определяют поведение формы при осуществлении операций Drag&Drop. Enabled - отвечает за общую активность формы. Если установлено в False, форма недоступна. Font - шрифт, используемый на форме. FormStyle - стиль формы или её поведение в MDI-приложении (многооконное приложение, где дополнительные формы располагаются "внутри" основной формы). Значения: • fsNormal - обычная форма (значение по умолчанию); • fsMDIChild - дочерняя (подчинённая) форма MDI-приложения; • fsMDIForm - главная форма MDI-приложения; • fsStayOnTop - форма находится поверх всех окон на экране. Height - высота формы в пикселах. В отличие от ClientWidth является высотой с учётом заголовка и границ формы. HelpContext, HelpFile, HelpKeyword, HelpType - свойства для связи формы с файлом справки в формате *.hlp. Hint - текст всплывающей подсказки. HorzScrollBar - свойство определяет внешний вид и поведение горизонтальной полосы прокрутки окна. Icon - значок (иконка) формы. Отображается в заголовке слева от заголовка. Задаётся файлом в формате *.ico. KeyPreview - если свойство установлено в True, то при нажатии клавиш сначала будут вызываться обработчики формы, а только затем обработчики того компонента, который в данный момент имеет фокус ввода. События, связанные с нажатием клавиш - OnKeyDown(), OnKeyPress(), OnKeyUp(). Left - позиция формы на экране (левого верхнего угла) в пикселах. Menu - позволяет выбрать один из компонентов-меню, который станет главным меню окна, т.е. будет отображаться вверху. Name - имя формы как объекта. Может содержать только латинские буквы, цифры и знак подчёркивания, и не может начинаться с цифры. Фактически, это то имя, по которому в программе можно обратиться к форме. ObjectMenuItem - используется при работе с OLE-объектами и позволяет связать пункт меню и OLE-объект: когда объект выделен, пункт меню активен и наоборот. OldCreateOrder - определяет, когда происходят события OnCreate() и OnDestroy() формы. Если установлено в False, то OnCreate() произойдёт после вызова всех конструкторов, а OnDestroy() - после вызова всех деструкторов. Начальное значение - False, изменять не рекомендуется. ParentBiDiMode - изменение свойства BiDiMode согласно значению объекта-предка формы. ParentFont - изменение шрифта (Font) согласно значению объекта- предка. PixelsPerInch - пропорции шрифта в системе (точек на дюйм). PopupMenu - позволяет указать контекстное меню (объект TPopupMenu) для формы. Это меню вызывается нажатием правой кнопки мыши. Position - определяет начальную позицию формы на экране, т.е. в момент её появления. Основные значения: • poDesigned - появление в том месте, в каком форма расположена в design-time; • poDesktopCenter - по центру рабочего стола (рекомендуемое значение); • poScreenCenter - по центру экрана; • poMainFormCenter - по центру главной формы приложения (для главной формы не имеет смысла). PrintScale - определяет размеры формы при выводе её изображения на печать. Scaled - включает масштабирование формы в соответствии с заданным значением свойства PixelsPerInch. ScreenSnap - если установлено в True, то форма будет автоматически "прилипать" к краям экрана в момент перемещения. SnapBuffer - определяет расстояние (в пикселах), на котором форма будет "прилипать" к краю экрана. ShowHint - включает/выключает показ всплывающей подсказки (Hint). Tag - специальное свойство, которое есть у всех объектов. Специального применения для этого свойства нет, поэтому оно используется для разных целей в конкретной ситуации. Свойство удобно в том случае, если нужно хранить некоторое целое число - не придётся заводить дополнительную переменную. Top - позиция формы (левого верхнего угла) на экране в пикселах. TransparentColor - включает/выключает прозрачность определённого цвета формы. TransparentColorValue - задаёт цвет, который будет прозрачным. UseDockManager - используется при реализации Drag&Drop технологии, предоставляя дополнительные возможности этого метода взаимодействия. VertScrollBar - определяет внешний вид и поведение вертикальной полосы прокрутки окна. Visible - определяет видимость формы на экране. Width - ширина окна в пикселах, включая границы. WindowMenu - свойство-аналог свойства Menu, но используемое при создании MDI-форм. WindowState - одно из состояний окна: • wsNormal - обычное состояние (занимает часть экрана); • wsMinimized - окно свёрнуто; • wsMaximized - окно развёрнуто на весь экран. Компонент ADOConnection Компонент ADOConnection используется для соединения с различными источниками ADO. Применение дает разработчику ряд преимуществ: • все компоненты доступа к данным ADO обращаются к хранилищу данных через одно соединение; • возможность напрямую задать объект провайдера соединения; • строка подключения хранится в одном месте, вместо того чтобы храниться в нескольких разных компонентах; • выполнение транзакций; • возможность выполнять команды ADO; • расширенное управление соединением при помощи методов- обработчиков событий. Компонент ADOConnection выполняет роль концентратора соединения с хранилищем данных. Для установления связи нужно с помощью свойства ConnectionString сформировать связные параметры и затем установить значение^^ в свойство Connected или вызвать метод Open. Для разрыва связи выполняется метод Close компонента или в его свойство Connected устанавливается значение False. До и после открытия и закрытия соединения разработчик может использовать соответствующие стандартные методы- обработчики событий: • property BeforeConnect: TNotifyEvent; • property BeforeDisconnect: TNotifyEvent; • property AfterConnect: TNotifyEvent; • property AfterDisconnect: TNotifyEvent; Параметр Connection содержит указатель на вызвавший обработчик компонент. Параметры ConnectionString, userID и Password определяют строку параметров, имя и пароль пользователя. Соединение может быть синхронным или асинхронным, что и определяется параметром ConnectOptions типа TConnectOption: • coConnectunspecified - синхронное соединение всегда ожидает результат последнего запроса; • coAsyncConnect - асинхронное соединение может выполнять новые запросы, не дожидаясь ответа от предыдущих запросов. Наконец, параметр EventStatus позволяет определить успешность выполнения посланного запроса на соединение: • esOK - запрос на соединение выполнен успешно; • esErrorsOccured - в процессе выполнения запроса возникла ошибка; • esCantDeny - соединение не может быть прервано; • esCancel - соединение было прервано до открытия; • esUnwantedEvent - внутренний флаг ADO. В свойствах CommandCount и DataSetCount содержится количество соответствующих объектов, которые обслуживаются данным компонентом. В сочетании со свойствами Commands и DataSets можно получить доступ к любому интересующему объекту. Важной особенностью компонента ADOConnection является возможность управления с его помощью транзакциями. Для этого в состав компонента добавлены соответствующие методы и события. С помощью методаBeginTrans стартует новая транзакция, методы CommitTrans и RollbackTrans подтверждают или откатывают транзакцию. Разрешается произвольная глубина вложенности транзакций, то есть после старта одной транзакции может немедленно стартовать следующая и т. д. Транзакция, стартующая с помощью компонента ADOConnection, разделяется всеми другими связанными с ним компонентами. С помощью свойства InTransaction программа может определить, завершилась ли ранее начатая транзакция. В таблице 1 перечислены свойства компонента ADOConnection. Таблица 1. Свойства компонента ADOConnection Свойство Описание property Attributes: TXactAttributes; Используется для установки транзакционных возможностей компонента, для управления завершением и отменой транзакций. propertyCommandTimeout: Integer; Указывает количество времени в секундах, после которого команда будет отменена, по умолчанию 30 с. Значение 0 приводит к неограниченному ожиданию. propertyConnected: Boolean; Указывает активность соединения: True означает соединение открыто. False - закрыто. propertyConnectionString: WideString; Используется для указания подробной информации о соединениях с источником данных. propertyConnectionTimeou t: Integer; Указывает количество времени в секундах, отведенное на установку соединения, по умолчанию 15 с. Значение 0 приводит к неограниченному ожиданию. propertyConnectOptions: TConnectOption; Устанавливает тип соединения: coConnectunspecified - синхронное соединение всегда ожидает результат последнего запроса; • coAsyncConnect - асинхронное соединение может выполнять новые запросы, не дожидаясь ответа от предыдущих запросов. propertyCursorLocation: TCursorLocation; Указывает местоположение механизма управления курсором. • clUseClient - клиентский курсор. Позволяет выполнять любые операции с данными, в том числе не поддерживаемые сервером; • clUseServer - серверный курсор. Реализует только возможности сервера, но обеспечивает быструю обработку больших массивов данных. propertyDefaultDatabase: String; Служит для указания базы данных, используемой по умолчанию. propertylsolationLevel: TIsolationLevel; Применяется для указания уровня изоляции транзакции. Значение, заданное этим свойством, вступает в силу, как только будет инициирована транзакция вызовом метода BeginTrans. Возможные значения: ilUnspecified - уровень изоляции не указан (провайдер использует другой уровень); • ilChaos - изменения, сделанные транзакциями с большим уровнем изоляции, не могут быть изменены текущим соединением; • ilReadUncommitted (или ilBrowse) - изменения, сделанные незавершенными транзакциями (незафиксированные в БД) сразу же видны в других транзакциях; • ilCursorStability (или ilReadCommitted) - изменения, сделанные другими транзакциями, видны только после завершения (фиксации) этих транзакций; • ilRepeatableRead - изменения, сделанные другими транзакциями, не видны, но могут быть получены в новом запросе (при обновлении); • ilSerializable (или illsolated) - транзакции проводятся в полной изоляции от других транзакций. propertyKeepConnection: Boolean; Определяет реакцию компонента на неиспользуемое соединение. Если через соединение не подключен ни один активный компонент, свойство KeepConnection в значении True сохраняет соединение открытым. Иначе, после закрытия последнего связанного компонента ADO. соединение закрывается. propertyLoginPromt: Boolean; Используется для указания того, нужно ли выводить диалоговое окно, предназначенное для ввода идентификатора пользователя и пароля при соединении с базой данных. property Mode: TConnectMode; Указывает допустимые для данного соединения разрешения на модификацию данных: • cmUnknown - разрешения еще не установлены или не определены; • cmRead - для соединения установлено разрешение "только чтение"; • cmWrite - установлено разрешение "только запись"; • cmReadWrite - для соединения установлено разрешение "запись/чтение"; • cmShareDenyRead - разрешение на чтение для других соединений запрещено; • cmShareDenyWrite - разрешение на запись для других соединений запрещено; • cmShareExclusive - разрешение на открытие для других соединений запрещено; • cmShareDenyNone - открытие других соединений с разрешениями запрещено. Практическая часть 1. Создаём и сохраняем проект в Delphi 7. 2. Добавляем на форму ADOConnection 2.1. Выделяем компонент TADOConnection и в свойстве LoginPromt ставим на False. (Для того, чтобы при подключении к БД у нас не запрашивался пароль). 2.2. В свойстве ConnectionString нажимаем на кнопку «...» и появляется окно следующего вида: В данном окне нажимаем на кнопку « Build...» и появляется окно следующего вида: В данном окне мы выбираем провайдера, а именно Microsoft Jet 4.0 OLE DB Provaider (для базы данных Microsoft Access 2003) Microsoft Office 12.0 Access Database Engine OLE DB (для базы данных Microsoft Access 2007(2010)) Драйвера провайдеры устанавливаются автоматически при установке соответствующего офиса. Нажмём кнопку «Далее». В данном окне мы указываем путь к нашей БД и имя пользователя по умолчанию Admin. (Если ваша БД находится в корневом каталоге с программой, то в данном поле достаточно указать ее имя с расширением, а если еще в подкаталоге, то указывается это примерно так BD\mydb.mdb) Путь к нашей БД base.mdb 3. Сохраните проект. |