Московский государственный университет имени М.В.Ломоносова
Опубликован: 20.12.2005 | Доступ: свободный | Студентов: 3156 / 376 | Оценка: 4.22 / 3.86 | Длительность: 12:03:00
ISBN: 978-5-9556-0068-0
Лекция 12:

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

Аннотация: Описываются классы библиотеки VCL, используемые для доступа к данным приводятся различные механизмы доступа к данным (с использованием ODBC-драйверов, OLE DB-провайдеров), применение курсоров, хранимых как на сервере, так и на клиенте, рассматривается преобразование SQL данных в XML данные.

Механизмы доступа к БД

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

Эти классы представлены следующими группами:

  • компоненты для доступа к данным, реализующие:
    • доступ через машину баз данных BDE (Borland Database Engine), предоставляющую доступ через ODBC-драйверы или через внутренние драйверы машины баз данных BDE (компоненты страницы BDE-палитры инструментов);
    • доступ через ADO-объекты (ActiveX Data Objects), в основе которого лежит применение технологии OLE DB (компоненты страницы ADO);
    • доступ к локальному или удаленному SQL-серверу InterBase (компоненты страницы InterBase);
    • доступ посредством легковесных драйверов dbExpress;
    • доступ к БД при многозвенной архитектуре (компоненты страницы DataSnap);
  • визуальные компоненты, реализующие интерфейс пользователя;
  • компоненты для связи источников данных с визуальными компонентами, предоставляющими интерфейс пользователя;
  • компоненты для визуального проектирования отчетов.

Основными механизмами доступа к данным, поддерживаемым в Delphi, являются:

  • ODBC - доступ через ODBC-драйверы БД или BDE-драйверы;
  • OLE DB - доступ с использованием провайдеров данных (OLE DB - это метод доступа к любым данным через стандартный COM-интерфейс);
  • средства dbExpress, использующие легковесные драйверы БД;
  • средства доступа к распределенным наборам данных в многозвенной архитектуре.

Самый простой механизм управления данными, использующий ODBC-драйверы, может быть реализован по следующей схеме:

  • В модуль данных (или в форму) добавляется компонент набора данных (объект класса TDataSet ) и устанавливается связь с источником данных, определяемая свойством DatabaseName. Связь может быть указана одним из трех способов: по имени базы данных, каталогу или псевдониму (способ указания связи может быть ограничен типом источника данных). Список всех псевдонимов доступен на этапе проектирования.
  • В модуль данных (или в форму) добавляется компонент источника данных ( TDataSourse ), являющийся центральным связующим звеном между набором данных и элементами управления, отображающими эти данные. Свойство DataSet компонента типа TDataSourse указывает набор данных, формируемый компонентами таких классов как TTable или TQuery. Если компоненты набора данных и источника данных расположены в модуле данных, то их следует добавить в проект (команда меню File | Use unit ).
  • В форму добавляются элементы управления для работы с данными, такие как TDBGrid, TDBEdit, TDBCheckbox. Они связываются с компонентом источником данных, который указывается свойством DataSource. Имя поля набора данных определяется свойством DataField.

Графически схему работы с базами данных для двухзвенных архитектур в среде Delphi можно представить следующим образом:


\[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \]
Машина баз данных BDE Провайдеры OLE DB dbExpress InterBase
\[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \]
TDatabase (необязательный) TADOConnection TSQLConnection TIBDatabase
\[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \]
Невизуальные компоненты набора даных
TTable, TQuery, TDataSet, TField TADODataSet, TADOTable, TADOQuery TSQLDataSet, TSQLQuery, TSQLTable, TSQLStoreProc, TSQLClientDataSet TIBDataSet, TIBTable, TIBQury
\[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \] \[ \uparrow \] \[ \downarrow \]
( \[ \uparrow \] свойство DataSet) Компонент "источник данных" - центральный связующий компонент TDataSource
\[ \uparrow \] \[ \downarrow \]
( \[ \uparrow \] свойство DataSource) Визуальные компоненты для работы с данными TDBGrid, TDBEdit, TDBText, TDBMemo, TDBCheckbox, TDBNavigator и др.

Для сохранения данных из БД в XML-формате или двоичном формате, и обратно, для формирования набора данных из XML или двоичного файла применяется провайдер данных.

Графически схема сохранения данных из БД в XML-формате приведена на следующей схеме:


\[ \uparrow \] \[ \downarrow \]
Набор данных (TTable, TQuery или др.)
\[ \uparrow \] (свойство DataSet)
Клиентский набор данных TClientDataSet \[ \to \] (свойство ProviderName) Провайдер данных TDataSetProvider
\[ \downarrow \] (метод SaveToFile) \[ \uparrow \] (метод LoadFromFile)
Файл в одном из следующих форматов: двоичный формат (dfBinary); XML-формат (dfXML); XML-формат, использующий UTF8 (dfXMLUTF8)