Однако существует целый
ряд доводов, против использования BDE:
- цена:
клиент-серверная версия Borland Delphi, включающая SQL Links,
стоит более 2000 долл. США, в то время как для любого из
серверов баз данных можно найти решение, которое будет более
быстрым, простым и дешевым;
- размеры
дистрибутива: используя BDE при разработке вы, фактически,
добавляете 2 дискеты к своему дистрибутиву;
- конфликты: возможен конфликт устанавливаемого приложения с
программами, уже установленными на данном компьютере и
использующими более старую или новую версию BDE;
- производительность: по сути дела, BDE -- промежуточное
программное обеспечение, что, естественно, отрицательно влияет
на производительность приложения в целом. Особенно неудобно,
когда BDE используется для доступа к источникам данных через
другое промежуточное ПО (например, ODBC);
- целесообразность: зачастую объем данных, которые необходимо
хранить, невелик и формат их не имеет значения. В таком случае
вполне достаточно хранить эти данные в некоей СУБД, обладающей
минимальной функциональностью. К тому же желательно, чтобы эта
функциональность была реализована в виде "родного”
Delphi-компонента, избавляющего программиста от установки на
машине конечного пользователя какого бы то ни было
дополнительного "двигателя” баз данных.
Эта задача была настолько
очевидной, востребованной и привлекательной, что с выходом первых версий Borland
Delphi появились и наборы компонент, открывающие доступ к источникам данных и
работающие без участия BDE. Только широко известных наборов компонент такого
рода на сегодняшний день насчитывается более 30 (табл. 1). Условно их можно
разбить на группы по признаку предоставления доступа к тем или иным источникам
данных. Вот некоторые из них.
Компоненты доступа
к серверам баз данных
Среди наборов компонент,
предоставляющих доступ к серверам баз данных, таких как Informix, MS SQL Server,
DB2, InterBase, MySQL, Oracle и Sybase, ваше внимание может привлечь компоненты
ZeosDBO. Прежде всего это связано с тем, что он распространяется бесплатно. Но
это не единственное его достоинство. В состав ZeosDBO входит несколько
библиотек.
Библиотека ZEOS Library
включает в себя целый спектр компонентов: прежде всего для быстрого доступа к
SQL серверам MySql, PostgreSql, MicrosoftSQL, Oracle и Interbase, минуя
посредничество BDE/ADO/ODBC. Библиотека включает:
- низкоуровневое API для доступа к клиентским частям MySql,
PostgreSql и Interbase;
- низкоуровневое объектно-ориентированное API для доступа к MySql,
PostgreSql и Interbase;
- TZXXSqlDatabase компоненты для предоставления соединения с базой
данных;
- TZXXSqlTransact компоненты для управления транзакциями;
- TZXXSqlQuery компоненты для выполнения SQL-запросов, просмотра и
редактирования содержимого простых и сложных запросов SELECT;
- TZXXSqlTable компоненты для просмотра и редактирования БД
таблиц;
- TZXXSqlMonitor компоненты для просмотра исходящих запросов на
SQL-сервер;
- TZUpdateSql компоненты для работы с запросами;
- TZBatchSql для исполнения Sql-скриптов.
Библиотека Zeos Controls -
управляющие элементы Zeos - включает следующие элементы:
- TZParser
компонент для анализа формул;
- TZFindDialog и TZFilterDialog диалоги для поиска и фильтрации;
- TZDBGrid,
улучшенная версия стандартного компонента с поиском и фильтром;
- TZDbHexEdit компонент для редактирования двоичных данных;
- TZDbImage
компонент для отображения изображений в формате bmp, jpeg и gif.
В данную библиотеку входят
и утилиты для работы с сервером MySQL - Interactive MySQL и PostgreSQL сервером
- Interactive PostgreSQL. Эти программные продукты позволяют создавать и
отлаживать SQL-запросы, просматривать и редактировать полученные таблицы, а
также blob-поля.
Zeos Database Explorer -
инструмент, обладающий всеми преимуществами Interactive MySQL и Interactive
PostgreSQL и поддерживающий Interbase SQL и Microsoft SQL. Позволяет
администрировать все доступные базы данных с помощью удобного интерфейса. Одно
из дополнительных преимуществ - наличие средств резервного архивирования и
восстановления базы данных.
Библиотека классов для
программирования на C++ для Linux, продолжающая традиции библиотек классов
Delphi VCL и Java, содержит абстрактные классы, классы для работы со
всевозможными списками, классы для работы с базами данных, потоками, строками,
сетевыми протоколами TCP/IP и т.д.
Компоненты доступа
к стандартным источникам данных
Среди наборов компонент,
предоставляющие доступ к стандартным источникам данных (xBase, Paradox, Access)
можно выделить GM Components. На данный момент на сайте фирмы-разработчика этого
набора для ознакомления доступны инсталляции для версий Borland Delphi 3,4,5.
Все они являются полнофункциональными, однако время работы приложения,
использующего эти компоненты, ограничено 15 минутами. Процесс инсталляции
автоматизирован и достаточно прост, после запуска интегрированной среды
разработчика Borland Delphi 5 появляются 3 новых закладки - GM, GM DB и GM DAO,
компоненты GM ADO добавляются на существующую закладку ADO.
На закладке GM размещаются
компоненты, относящиеся, по большей части, к разработке интерфейса приложения:
индикатор процесса, кнопка, селектор цвета, селектор стиля кисти, меню и т.д.
Многие из них являются усовершенствованными потомками стандартных компонент
Delphi и, по-моему, особой ценности для разработчика не представляют, поскольку
существует масса бесплатных компонент со схожей функциональностью.
Более интересной выглядит
закладка GMDB, на которой размещены такие компоненты доступа к данным как:
- DB
Mediaplayer, имеющий стандартный вид Windows Mediaplayer;
- DB
Datagrid с индикацией проиндексированных и ключевых полей;
- компоненты GMDBEdit, GMDBImage, GMDBMemo, GMDBRichEdit,
являющиеся наследниками компонент Delphi с расширенной
функциональностью.
На закладке ADO
размещаются компоненты, открывающие доступ к данным OLE-DB провайдеров,
осуществляющийся без использования BDE.
И, наконец, на закладке DAO
размещаются четыре компоненты, обеспечивающие доступ к файлам баз данных,
хранимых в формате MS Access, а также к данным посредством ODBC.
Для построения несложного
приложения Borland Delphi, использующего для хранения данных базу в формате MS
Access, достаточно выполнить несколько простых шагов.
Создать файл базы данных с
использованием, например MS Access 2000, в котором построить таблицу, указать
ключевые поля и создать индексы.
Создать новый проект в
интегрированной среде разработчика Borland Delphi и разместить на нем:
- компонент
DAODataBase1, установив свойство DaoLibrary равным dlDAO36 в
случае использования файла базы данных MS Access 2000, в
свойстве DatabaseFile указать имя файла базы данных, свойство
Active установить равным True;
- компонент
DAORecordset1, установив свойство DAODatabase равным
DAODataBase1, свойство TableName (имя таблицы) равным main,
свойство Index равным FIO, свойство Active установить равным
True, а также в редакторе полей которого (открыть его можно,
щёлкнув правой кнопкой мыши на компоненте и выбрав Fields
Editor) можно добавить поля таблицы и установить им свойство
Title (заголовок);
- компонент
DataSource1, установив свойство Dataset равным DAORecordset1;
- компонент
DBNavigator1, установив его свойство DataSource равным
DataSource1;
- компонент
GMDBDataGrid1, установив его свойство DataSource равным
DataSource1;
Единственным, но
существенным недостатком shareware-версии данной библиотеки компонентов,
является ограничение работы приложения пятнадцатью минутами, по истечении
которых оно закрывается без сохранения не записанных данных, о чем, впрочем,
пользователя честно предупреждают перед каждым запуском программы.
DBISAM: давайте
познакомимся…
К наборам компонент,
предоставляющих доступ к данным, хранящимся только в собственном формате,
относится DBISAM.
На сегодняшний день
последняя выпущенная версия Elevate Software DBISAM предназначена для
использования как с Borland Delphi 5, так и для Borland C++ Builder 5. В состав
этого пакета входит три утилиты - DBISAM Database System Utility, DBISAM BDE
Database Transfer Utility, а также Customer Support Transfer Utility. Кроме
того, после инсталляции этого продукта, на палитре компонентов Borland Delphi
появятся две новые закладки - DBISAM и DBISAM Utilities - всего с девятью
компонентами, которых вполне достаточно для построения приложения,
взаимодействующего с базой данных. Кстати, процесс инсталляции полностью
автоматизирован и не вызовет никаких трудностей, если вы обладаете хотя бы
минимальными знаниями английского языка и опытом работы с Windows.
… и поработаем
вместе: DBISAM Database System Utility
Идеология создания файла
базы данных с помощью пакета DBISAM покажется вам очень знакомой. Только вместо
использования Borland Database Desktop нам предлагается воспользоваться DBISAM
Database System Utility -- утилитой для создания файлов баз данных DBISAM. Если
вы хорошо знакомы с Borland Database Desktop, то особых сложностей с
использованием его альтернативы у вас возникнуть не должно.
С помощью меню "File-New
Table” (альтернатива - первая кнопка на панели инструментов) откроем окно "New
Table”, вид которого представлен на рис. 9 (перевод добавлен автором статьи), и
создадим простейшую базу данных, содержащую три поля: поле NPP для
автоматической нумерации записей, поле FIO для записи фамилии, имени и отчества,
а также поле ADDRESS - для записи адреса.
Обратите внимание на
следующие особенности, поддерживаемые на этапе создания БД:
- поддержка
номера версии и описания для файла БД;
- шифрование и установка пароля;
- возможность использования русского, украинского и белорусского
языков для заполнения БД (наряду с традиционными английским,
немецким и т.д.);
- установка
параметров главного (первичного) индекса: установка порядка
сортировки, чувствительности к регистру, сжатия;
- поддержка
целого спектра типов данных: string, blob, memo, fmtmemo,
typedbinary, date, time, timestamp, boolean, smallint, word,
integer, autoinc, float, currency, bcd, bytes;
- поддержка
вторичных индексов;
- импортирование структуры другой БД (кнопка "Borrow Structure…”).
Создадим для нашей БД два
вторичных индекса для полей FIO и ADDRESS.
Для вторичных индексов
также можно задать ряд параметров:
- обратный
порядок сортировки ("Desc”);
- нечувствительность к регистру ("Case-Ins”);
- поддержка
уникальности записи ("Unique”);
- компрессию (сжатие) индекса ("Compression”).
После нажатия на кнопку
"Save” БД сохраняется на диске - процесс создания завершен. Необходимо отметить
тот факт, что файл БД (в данном случае test.dat) имеет расширение .dat, а
индексы, blob-поля и т.д., хранятся в одноименных файлах, но с другими
расширениями (здесь - test.idx). Об этом необходимо помнить при переносе
приложения на другой ПК.
Кроме создания собственно
БД, DBISAM Database System Utility предоставляет целый ряд дополнительных
функций и утилит, которые при работе с БД обеспечивают:
- создание
и использование SQL-запросов (меню "File-New SQL Query”);
- полноценную работу с БД как в эксклюзивном режиме, так и при
работе в сети (меню "File-Open Table Exclusive” и "File-Open
Table Shared”);
- реструктуризацию (меню "Utilities-Restructure”), оптимизацию
(меню "Utilities-Optimize”) и восстановление файла БД (меню
"Utilities => Repair”);
- очистку
(меню "Utilities => Empty”), копирование щ(меню "Utilities =>
Copy”), переименование (меню "Utilities => Rename”) и удаление
БД (меню "Utilities => Delete”);
- получение
информации о версии файла БД и возможность обновления до текущей
версии.
Немного о
реверс-инженерии
Есть еще один очень
интересный инструмент, скрывающийся в меню "Utilities” под скромным названием
"Reverse Engineer”. Этот инструмент генерирует код на SQL-92, Object Pascal для
Delphi или C++ для Borland C++ Builder (по выбору), создающий структуру
выбранной базы данных DBISAM.
Кроме выбора языка, на
котором будет генерироваться код, предоставляется возможность включения в него
дополнительного кода, добавляющего существующие данные во вновь создаваемую
таблицу БД (пункт "Include Code to Add Existing Data”) .
DBISAM BDE Database Transfer Utility
С помощью этого приложения
можно осуществить перенос БД, разработанной для использования через BDE, в
систему DBISAM.
Источник данных можно
выбирать как с помощью существующего псевдонима BDE ("Select Source Alias”), так
и с помощью дерева каталогов ("Select Source Directory”). В окне выбора таблиц
для переноса ("Select Tables To Transfer”) можно выбрать как один, так и
несколько файлов баз данных для переноса. После выбора каталога назначения
("Select Destination Directory”), остаётся нажать кнопку "Начать перенос”
("Begin Transfer…”), и приложение осуществит перенос. Очень похоже на несколько
видоизмененный Data Pump, не правда ли?
Пример
программного интерфейса
Для того чтобы начать
работу с уже существующей БД (в нашем случае test.dat), достаточно создать
несложный интерфейс с помощью Borland Delphi.
В простейшем случае для
этого необходимо выполнить ряд стандартных операций.
- Запустим
интегрированную среду разработчика Borland Delphi 5 и создадим
новое приложение ("File-New Application”).
- Поместим
на форму компонент DBISAMDatabase1, установим его свойство
Directory равным каталогу, в котором находится файл базы данных
test.dat. Затем разместим на форме компонент DBISAMTable1 и
присвоим его свойству DatabaseName значение "TEST”, свойству
TableName присвоим значение "test.dat”, свойству Active – True.
Затем нажмём на компоненте правой кнопкой мыши и выберем
"Редактор Полей” ("Fields Editor”), в котором опять нажмём
правую кнопку мыши и выберем "Добавить все поля” ("Add all
fields”). После чего каждому из трех полей, появившихся в
редакторе, установим соответственное значение свойства
DisplayLabel (например, "№ п/п”, "Ф.И.О.”, "Адрес”). И, наконец,
перейдем на закладку Data Access и разместим на главной форме
приложения компонент DataSource1, установив его свойство DataSet
равным DBISAMTable1.
- Дело
осталось за двумя визуальными компонентами - навигатором БД и
сеткой БД. Перейдем на закладку Data Controls и разместим на
форме компонент DBNavigator1, установим его свойство DataSource
равным DataSource1, свойство Align равным alTop. С закладки
DBISAM Utilities возьмем компонент DBISAMDBGrid1, установим его
свойство DataSource равным DataSource1, свойство Align равным
alClient.
Всё, что осталось сделать,
- откомпилировать проект. После компиляции не трудно заметить, что размер
EXE-файла проекта занимает около 1 МБ, что примерно на 400 КБ больше, чем обычно
в подобном случае с BDE. Вполне умеренная плата за такую функциональность, не
так ли?
Подведем итоги
На сегодняшний день рынок
альтернатив Borland Database Engine богат и разнообразен, и при необходимости
можно достаточно легко найти библиотеку компонент, обладающую необходимой именно
вам функциональностью, с невысокой ценой или даже freeware. Однако, особенно в
случае использования таких библиотек в крупных проектах, необходимо обратить
внимание не только на цену и заявленную функциональность. Наличие серьезной
документации к такого рода программному обеспечению, возможность получить
исходные коды, оперативная техническая поддержка, длительность существования
фирмы-разработчика на этом рынке, ее планы на будущее – все это также серьезные,
а может быть и решающие, факторы для принятия окончательного решения. Главное --
чтобы в результате ваши ожидания относительно выбранного программного продукта
оправдались. А решение в любом случае остается за вами.
Автор: Чужа Виталий
|