Использование FIBL

Модератор: Модераторы

Ответить
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Использование FIBL

Сообщение keymaster »

Решил попользовать Firebird embed в приложениях.
Для разработки поставил FIBL, но теперь приложение требует
разные DLL из обычного firebirdа.

Я что-то упустил?
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

embedded server - это fbembed.dll, копируешь ее в папку с программой,
переименовываешь в fbclient.dll и работаешь.
Но могут потребоваться fbintl.dll, ifbudf.dll,firebird.conf,firebird.msg
Это будет выглядеть примерно так:

Код: Выделить всё

  c:\my_app\app.exe
  c:\my_app\fbclient.dll
  c:\my_app\ib_util.dll
  c:\my_app\firebird.conf
  c:\my_app\firebird.msg
  c:\my_app\intl\fbintl.dll
  c:\my_app\udf\fbudf.dll

Читай README_embedded.txt
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

я не о том.
При инсталляции в лазаря компонентов FIBL он требует других DLL, которых в embed нет, например - msvcr7.dll

Вторая проблема - поставил Firebird 1.5, базы не поднимаются из бэкапа (Unsuccessful execution caused by an unavailable resource.
Cannot attach to services manager.)
Новые БД не создаются, говорит, что unavailable database.
C базой работаю из IBExpert.
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

Ну так поставь, раз требует.
При сборке FB использовался MSVC7 скорее всего, поэтому и требует
У меня в System32 msvcr7.dll уже лежала, поэтому ничего такого у меня не было.
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

Получается, что к заказу надо добавить несколько лишних DLL.
Это не есть гуд.
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

А со второй проблемой как быть?
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

Первое, что приходит в голову, а поднят ли собственно сам FB?
Во-вторых, IBExpert иногда глючит при восстановлении..
Правд а, у меня вылетал уже после начала самого процесса.
Попробуй gbak
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

FB поднят.
База поднялась из бэкапа.
Создаю в проекте datamodule, на него кладу FIBDatabase.
При попытке поставить connected в true говорит unavailable database.
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

Как насчет FIBTransaction?
Без него никак.
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

Естественно, он присутствует.
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

Переустановил FB заново.
Заработало вроде, но:

при запуске проекта, говорит DB is currently open и падает.
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

Свойствам DefaultTransaction (у FIBDatabase) и DefaultDatabase (у FIBTransaction) присвоены значения?
DBName корректно заполнен, в смысле полный путь к БД?
Вообще приведи значения для основных свойств этих двух компонентов.
-----------
ПО последней проблеме, попробуй сервис FB перезапусти.
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

Соединение устанавливается так:

Код: Выделить всё

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin

  with FIBDatabase1 do
  begin
   DBName := ExtractFileDir(Application.ExeName)+  '\hc.gdb';
   DefaultTransaction := FIBTransaction1;
   UserName := 'sysdba';
   Password := 'masterkey';
   Connected := true;
  end;
 
  with FIBTransaction1 do
  begin
    DefaultDatabase := FIBDatabase1;
    Active := True;
  end;
end;
       
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

А если так:

Код: Выделить всё

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  with FIBDatabase1,FIBTransaction1 do begin
    DBName := ExtractFileDir(Application.ExeName)+  '\hc.gdb';
    DefaultTransaction := FIBTransaction1;
    DefaultDatabase := FIBDatabase1;
    UserName := 'sysdba';
    Password := 'masterkey';
    Connected := true;
    Active := True;
  end;
 end;


Т.е. Подключаемся к БД только после установки DefaultTransaction и DefaultDatabase
keymaster
новенький
Сообщения: 73
Зарегистрирован: 13.04.2006 12:16:03

Сообщение keymaster »

При таком раскладе, как ни странно, заработало.
Спасибо.
Ответить