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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Firebird Embedded - какие dll положить рядом с exe, и создание самой бд... 
:(
    Опции темы
Akella
Дата 19.11.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(holodnaya @  18.11.2009,  23:19 Найти цитируемый пост)
нет, не установлен. Только не смейся.

 smile

Добавлено через 43 секунды
- У меня машина не едет. Машина без двигателя. Почему не едет, в чём может быть проблема? smile

Добавлено через 5 минут и 28 секунд
Цитата(holodnaya @  18.11.2009,  23:19 Найти цитируемый пост)
Прочитала тему, где THandle советовался по поводу выбора СУБД. После прочтения у меня создалось впечатление, что FireBird можно не устанавливать на том компе, где будет прога и сама база (достаточно только кинуть пару dll). Сейчас перечитала, и четкого убеждения в этом нет... Возможно, тогда у меня сложилось ошибочное мнение. 

Начнём с того, что нельзя подключаться к встраиваемой версии птички через сеть, как это делаешь ты
Код
IBDatabase1.DatabaseName := 'localhost:C:\test\Student.FDB';

Весьма затруднительно будет использовать IBX и встраиваемую версию сервера. Хотя.... можно, конечно, закинуть в Windows\system32\ все файлы Firebird Embedded и затем переименовать embedd.dll в gds32.dll.
Зачем переименовывать? Просто в  IBX нет возможности явно указать имя библиотеки доступа, а по сему в этих компонентах зашито использование библиотеки gds32.dll, которая должна быть расположена в Windows\system32\.
PM MAIL   Вверх
Akella
Дата 19.11.2009, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(holodnaya @  18.11.2009,  23:19 Найти цитируемый пост)
Получается, что и на компьютер, куда переносим базу, нужно устанавливать FireBird? И просто копированием нескольких библитек не обойтись?

О какой конфигурации идёт речь? Об обычной или об встраиваемой? О клиентской части или о серверной?

Кратко.
Если речь идёт об обычной конфигурации firebird (НЕ Embedded), то на серверной машине (там где будет база) устанавливается полная нормальная версия птички. А на другом сетевом компьютере нужно использовать 2 файла: fbclient.dll и msvcr71.dll.
Строка подключения server_name:c:\base\data.fdb


Если речь идёт о встраиваемой конфигурации firebird (Embedded - локальная версия сервера), то на компьютер (там где будет база) копируются в папку приложения (обычно так) все файлы Firebird Embedded . Нет возможности для работы по сети и даже 2 приложения не могут получить одновременный доступ к базе. С одной и той же бозой можно работать двумя приложениями, но подключаться они должны через одну и ту жу библиотеку доступа.
Строка подключения c:\base\data.fdb

Расширение файла (*.FDB) никак не влияет на доступ к базе. Имя базы может быть с любым расширением и даже состоять из одной буквы без расширения. Не советую брать расширение *.GDB,  т.к. база в этом случае может тормозить из-за того, что система восстановления Windows будет делать резервную копию базы.

Добавлено через 2 минуты и 31 секунду
Цитата(Gluttton @  18.11.2009,  23:33 Найти цитируемый пост)
Первые два требуют инсталяции, а для работы с третьим достаточно рядом с испольняимым файлом поместить необходимые компоненты (теоретически файлов должно быть несколько, сейчас уже не вспомню, где об этом читал, но на практике, достаточно и одной библиотеки).

Думаю, что недостаточно одной библиотек. Как минимум три. Но, согласно, лицензии (наверное (я не читал)) нельзя разбивать на части файлы.

Добавлено через 5 минут и 31 секунду
Собственно эти файлы и есть встраиваемый сервер:
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll

А СКОРЕЕ ВСЕГО ПОНАДОБЯТСЯ ещё и эти:
msvcp71.dll
msvcr71.dll

Ну и собственно библиотека доступа:
fbembed.dll

А ещё файл конфигурации:
firebird.conf

И вдобавок файл сообщений:
firebird.msg

Добавлено через 7 минут и 21 секунду
А ещё могут понадобиться файлы из папки intl: 
fbintl.dll
fbintl.conf

А также все файлы из папки: udf

Лучше не разрывать сервер на части smile
PM MAIL   Вверх
Deniz
Дата 19.11.2009, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  19.11.2009,  03:41 Найти цитируемый пост)
а по сему в этих компонентах зашито использование библиотеки gds32.dll, которая должна быть расположена в Windows\system32\
gds32.dll (переименованная из fbembed.dll) может лежать рядом с программой, ничего копировать в Windows\system32\ не надо.

holodnaya, про то, какие файлы должны где лежать уже не один раз писали, читаем файл \doc\README_embedded.txt из архива embedded сервера, для разных версий сервера (1.5, 2.х) набор файлов меняется.

Далее общие рекомендации по разработке и установке ПО.
На месте разработчика лучше установить полную версию SuperServer. Все подключения к БД осуществлять через localhost:disk:\local\path\to\database\dbname.fdb исключать localhost не рекомендую.

При установке ПО на другой комп есть 2 варианта:
1. Если с одной БД работают несколько человек/приложений, то устанавливаем полный сервер и подключения server:disk:\local\path\to\database\dbname.fdb
2. Если с одной БД работает 1 человек/приложение достаточно скопировать embedded сервер см. выше.

PS:holodnaya, нужно было начинать новую тему.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 19.11.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deniz @  19.11.2009,  06:35 Найти цитируемый пост)
gds32.dll (переименованная из fbembed.dll) может лежать рядом с программой, ничего копировать в Windows\system32\ не надо.

Хм.. буду знать. Хотя я использовал IBX 1 раз очень давно.
PM MAIL   Вверх
holodnaya
Дата 19.11.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Спасибо вам огромное за помощь. Очень выручили.  smile 
Оказывается, нужно было просто очень внимательно прочитать ReadMe. Положить все файлики, которые указал Akella (они же указаны в ReadMe),   в папочку с прогой и в файле 
firebird.conf указать свою RootDirectory (в readMe описано, как и что именно подставлять).
и в приложении у IBDatabase у свойства DatabaseName убрать localhost.
PM MAIL   Вверх
Deniz
Дата 19.11.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  19.11.2009,  12:43 Найти цитируемый пост)
Хм.. буду знать. Хотя я использовал IBX 1 раз очень давно.
у меня есть такие проекты, пока не было embedded, приходилось ставить полный сервер.
PS: Если вспомнить как работает загрузка модуля (dll) в Windows, то сначала dll'ка ищется в текущей папке, а потом в путях из переменой PATH


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 19.11.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(holodnaya @  19.11.2009,  10:53 Найти цитируемый пост)
убрать localhost. 

убрать localhost: - ведь каждый символ имеет значение, ошибка и уже ты к базе не подключишься

Добавлено через 1 минуту и 22 секунды
Цитата(Deniz @  19.11.2009,  12:36 Найти цитируемый пост)
PS: Если вспомнить как работает загрузка модуля (dll) в Windows, то сначала dll'ка ищется в текущей папке, а потом в путях из переменой PATH

просто программа до запуска DLL-ки может изменить текущую директорию и там не окажется библиотеки доступа
PM MAIL   Вверх
Deniz
Дата 19.11.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  19.11.2009,  17:10 Найти цитируемый пост)
просто программа до запуска DLL-ки может изменить текущую директорию и там не окажется библиотеки доступа
под "в текущей папке" имелось ввиду папка программы, причем если в Delphi изменить текущую директорию командой SetCurrentDir(...), то dll'ка все равно грузится из папки программы.

Автору, если вопрос решен, помечай как решенный.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 19.11.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Deniz @  19.11.2009,  15:16 Найти цитируемый пост)
под "в текущей папке" имелось ввиду папка программы,

Есть функция GetCurrentDir, которая возвращает текущую папку. По-умолчанию это папка запуска программы. Но и есть процедура SetCurrentDir, которая может изменить папку по-умолчанию. Я это имел ввиду.
PM MAIL   Вверх
Deniz
Дата 20.11.2009, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Akella @  19.11.2009,  19:36 Найти цитируемый пост)
Но и есть процедура SetCurrentDir, которая может изменить папку по-умолчанию.
прочитай внимательнее
Цитата(Deniz @  19.11.2009,  18:16 Найти цитируемый пост)
если в Delphi изменить текущую директорию командой SetCurrentDir(...), то dll'ка все равно грузится из папки программы.



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 20.11.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Я не утверждаю smile, это моё предположение.
PM MAIL   Вверх
Deniz
Дата 20.11.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Akella, я специально у себя провел маленький эксперимент
Код
procedure TForm1.Button1Click(Sender: TObject);
var IBLibrary : integer;
    s : string;
begin
  IBLibrary:=LoadLibrary('MyLib.dll');
  if (IBLibrary > HINSTANCE_ERROR) then s:='Library loaded OK'
                                   else s:='Error';
  if IBLibrary > HINSTANCE_ERROR then FreeLibrary(IBLibrary);
  Memo1.Lines.Add(s);
end;

procedure TForm1.Button2Click(Sender: TObject);
var s : string;
begin
  s:='Curr dir: ' + GetCurrentDir; Memo1.Lines.Add(s);
  s:='Set curr dir: d:\';
  if SetCurrentDir('d:\') then s:=s + ' OK' else s:=s + ' error';
  Memo1.Lines.Add(s);
  s:='Curr dir: ' + GetCurrentDir; Memo1.Lines.Add(s);
end;
MyLib.dll переименованная из gds32.dll. Код по загрузке/выгрузке dll взят из исходников IBX


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
SergXP
Дата 9.12.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



эх... что-то не получается у меня приконнектиться к файлу FDB.
Сделал все как вы сказали, но результата нет :(
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
   IBDatabase1.DatabaseName := 'D:\base.FDB';
   IBDatabase1.Params.Add('user_name=SYSDBA');
   IBDatabase1.Params.Add('password=masterkey');
   IBDatabase1.Params.Add('lc_ctype=win1251');
   if IBDatabase1.Connected=true then ShowMessage('Соединение Установлено!');
end;

procedure TForm1.Button2Click(Sender: TObject);
var IBLibrary : integer;
    s : string;
begin
  IBLibrary:=LoadLibrary('fbembed.dll');
  if (IBLibrary > HINSTANCE_ERROR) then s:='Library loaded OK'
                                   else s:='Error';
  //if IBLibrary > HINSTANCE_ERROR then FreeLibrary(IBLibrary); // я так понимаю, это ф-ция выгрузки dll
  Memo1.Lines.Add(s);
end;

DLL подгружается нормально...
Закинул все файлы от embedded толку нет, нет соединения :(
Что не так? Подскажите пожалйуста  smile 
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Akella
Дата 9.12.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



fbembed.dll нужно переименовать в GDS32.DLL
PM MAIL   Вверх
SergXP
Дата 9.12.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



переименовал, результат тот же :( Не могли бы вы показать на простом примере как подключиться к файлу БД?
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.