просмотров:20377 | комметариев: 4
Пару слов о BDE или жизнь без псевдонимов

Существует несколько популярных механизмов доступа к данным, например - ODBC, OLE DB и ADO фирмы Microsoft которые являются промышленным стандартом.
В отличии от них BDE(Borland Database Engine) фирмы Borland, то он так и не стал промышленным стандартом, хотя до недавнего времени широко применялся, так как до выхода Delphi 5 был практически единственным универсальным механизмом доступа к данным.

Один из минусов работы с BDE механизмом является , то что при переносе приложения на другой ПК на котором не установлен BDE нужно его устанавливать. Ничего в этом страшного нет, так как любая мало-мальски сложная система обычно требует установки многих третье сторонних продуктов , во-вторых BDE бесплатна и вы можете её ставить где угодно и кому угодно. Это можно сделать с тех же дисков с которых Вы устанавливали Delphi или C++Builder. Только при установке нужно отключить все индикаторы кроме BDE. Еще после этого нужно будет ввести псевдонимы (если вы их используете).

Но есть еще один вариант. Если Вы используете локальные таблицы, без использования локального SQL, версия BDE не ниже пятой и готовы отказаться от использования псевдонимов то можно обойтись без установки BDE. Для этого нужно перенести из папки в ProgFilesCommonFilesBorlandSharedBDE в папку вашего приложения следующие файлы blw32.dll, idapi32.dll, idr20009.dll, idpdx32.dll bantam.dll, charset.cvb, usa.btl для Paradox-таблиц или iddbas32.dll для DBF-таблиц. В этот же каталог переместите и ваши базы данных (или в папке с приложением создать папку например "data" и переместить их туда чтоб не путались), а в приложении нужно обращаться к таблицам не по псевдонимам, а по именам файлов. Как на практике это сделать будет описано ниже.

Если что то не работает перенесите из указанного каталога все файлы *.dll, *.cvb, *.btl, а потом методом научного "втыка" убирайте лишние.

Физически BDE представляет собой набор библиотек доступа к данным, реализующих BDE API - набор функций для манипуляции данными, вызываемых из приложения. Здесь найдете описание некоторых из них.

Вот один из способов как можно обойтись без псевдонимов и быть не зависимым от перестройки файловой системы.
В обработчик события OnFormCreate нужно поместить следующий код:

Код Delphi
 

procedure TForm1.FormCreate(Sender: TObject);
begin
try
Table1.Active := False;
Table1.DatabaseName := (ExtractFilePath(Application.ExeName)+'data');
Table1.TableName := 'COUNTRY.DB';
Table1.Active := True;
except
on EDatabaseError do
begin
Application.MessageBox('Невозможно открыть базу данных.', 'Ошибка', MB_ICONERROR);
Halt;
end;
end;
end;

Код C++Builder
 

void __fastcall TForm1::FormCreate(TObject *Sender)
{
try
{
Table1->Active = false;
Table1->DatabaseName = (ExtractFilePath(Application->ExeName)+"data");
Table1->TableName = "COUNTRY.DB";
Table1->Active = true;
}
catch (EDatabaseError*)
{
Application->MessageBox("'Невозможно открыть базу данных.", " Ошибка ", MB_ICONERROR);
Application->Terminate();
}
}

Конструкция ExtractFilePath(Application->ExeName) возвращает путь к пусковому файлу приложения, к этому пути прибавляется папка "data" - здесь нужно хранить файлы баз данных (не нравится "data" дайте другое имя). COUNTRY.DB - имя конкретной базы данных (впишите ваше). Строка Table1->Active = true; - открытие набора данных.
Дальше идет вылавливание исключений если пошло что то не так.
Подготовленное таким образом приложение запускается на любой машине без необходимости инсталляции BDE, устойчив и нечувствителен к смене положения в файловой системе /переинсталляции системы/порчи реестра/влиянии на другие BDE-приложения.
Здесь можно скачать пример приложения которое не требует для своей работы установки BDE(418 кб).

Вообще использование BDE это не самый лучший вариант. Кроме головной боли связанных с установкой приложений, иногда могут возникать проблемы с кириллицей в базах данных. Так что возможно удобнее использовать другие механизмы, например ADO.

Все. Разрешите откланяться. Будьте здоровы. 11 ноября 2008 г. Автор Губарев Михаил.

###

просмотров:20377 | комметариев: 4
Алексей
28 ноября 2008, 14:41
Работает!! Теперь никаких алиасов
Олег
03 января 2009, 20:33
Помогло. Спасибо.
асима
22 апреля 2009, 11:05
а как с ADO
Губарев Михаил
07 мая 2009, 13:51
асима, с ADO все просто, для работы с ADO нужен драйвер Microsoft Jet 4.0 OLEDB, который установлен в линейке Windows NT (начиная Win 200) по умолчанию. Другими словами никакие предварительные действия при разработке/установке приложения на другой ПК не нужны.

Даже не нужно, чтобы был установлен Microsoft Office Access...

ИМХО, BDE - вчерашний день

просмотров:20377 | комметариев: 4

Оставить комментарий:    

Ваше имя:
 
Текст комментария:
 
+ 1 =