BORLAND DELPHI: Базы данных "на DELPHI" - BDE

Источник: PC World
Чужа Виталий

Omnia mea mecum porto
Bias

Всё своё ношу с собой
Биант

Однако существует целый ряд доводов, против использования 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.

В простейшем случае для этого необходимо выполнить ряд стандартных операций.

  1. Запустим интегрированную среду разработчика Borland Delphi 5 и создадим новое приложение ("File-New Application").
  2. Поместим на форму компонент DBISAMDatabase1, установим его свойство Directory равным каталогу, в котором находится файл базы данных test.dat. Затем разместим на форме компонент DBISAMTable1 и присвоим его свойству DatabaseName значение "TEST", свойству TableName присвоим значение "test.dat", свойству Active - True. Затем нажмём на компоненте правой кнопкой мыши и выберем "Редактор Полей" ("Fields Editor"), в котором опять нажмём правую кнопку мыши и выберем "Добавить все поля" ("Add all fields"). После чего каждому из трех полей, появившихся в редакторе, установим соответственное значение свойства DisplayLabel (например, "№ п/п", "Ф.И.О.", "Адрес"). И, наконец, перейдем на закладку Data Access и разместим на главной форме приложения компонент DataSource1, установив его свойство DataSet равным DBISAMTable1.
  3. Дело осталось за двумя визуальными компонентами - навигатором БД и сеткой БД. Перейдем на закладку Data Controls и разместим на форме компонент DBNavigator1, установим его свойство DataSource равным DataSource1, свойство Align равным alTop. С закладки DBISAM Utilities возьмем компонент DBISAMDBGrid1, установим его свойство DataSource равным DataSource1, свойство Align равным alClient.

Всё, что осталось сделать, - откомпилировать проект. После компиляции не трудно заметить, что размер EXE-файла проекта занимает около 1 МБ, что примерно на 400 КБ больше, чем обычно в подобном случае с BDE. Вполне умеренная плата за такую функциональность, не так ли?

Подведем итоги

На сегодняшний день рынок альтернатив Borland Database Engine богат и разнообразен, и при необходимости можно достаточно легко найти библиотеку компонент, обладающую необходимой именно вам функциональностью, с невысокой ценой или даже freeware. Однако, особенно в случае использования таких библиотек в крупных проектах, необходимо обратить внимание не только на цену и заявленную функциональность. Наличие серьезной документации к такого рода программному обеспечению, возможность получить исходные коды, оперативная техническая поддержка, длительность существования фирмы-разработчика на этом рынке, ее планы на будущее - все это также серьезные, а может быть и решающие, факторы для принятия окончательного решения. Главное -- чтобы в результате ваши ожидания относительно выбранного программного продукта оправдались. А решение в любом случае остается за вами.


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=5505