IBPP и Firebird Embedded

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
KWladimir
Сообщения: 15
Зарегистрирован: 29 ноя 2006, 16:13

IBPP и Firebird Embedded

Сообщение KWladimir » 05 дек 2006, 14:26

(Вообще-то IBPP не визуальные, но по смыслу вроде бы в этот раздел. Если нет - сорри.)

Делаю проект под DevC++/wxWidgets и Firebird 2.0. Для доступа к БД использую devpak IBPP.
В каталог проекта скопировал все файлы/каталоги из embedded-архива.

С запущенным сервером всё работает отлично.
Но если сервер выгружаю (т.е.пытаюсь работать через embedded), то подключения не происходит, а в логе - ошибка соединения 10061.
(Насколько я понял, это - "не найден сервер").

Здесь вот http://www.ibpp.org/reference/clientlibsearchpaths авторами IBPP сказано, что порядок поиска библиотеки такой:
1. fbembed.dll from the host application executable directory,
2. fbclient.dll from the host application executable directory,
3. fbclient.dll from the directory specified by the DefaultInstance registry value of the SOFTWARE\Firebird Project\Firebird Server\Instances registry key,
4. fbclient.dll without specifying any path, such that the system will choose locations from which to try (usually the system directories)
5. gds32.dll, for compatibility purposes, without specifying any path, the system will decide from which locations to try (usually the system directories).

т.е. в первую очередь ищется библиотека fbembed.dll в каталоге программы (как оно и есть).

Имя сервера пишу - localhost, user/pass=SYSDBA/masterkey.

(Пробовал в самом начале вызвать IBPP :: ClientLibSearchPaths(каталог программы)), но ничего не изменилось.

Ещё там в конце сказано, что вначале оно смотрит PATH и вродекак я понял, можно/нужно как-то "have the binary dependencies of fbclient.dll" т.е. как-то привязать конкретную копию dll к проекту.
Но если это так, то чего-то я не догоню, как.

Ставил каталог программы в начало PATH - без результата.

В чём может быть проблема? Где-нибудь ещё нужно указать на fbembed.dll?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 дек 2006, 14:59

10061 это ошибка TCP/IP. Embedded не работает по TCP/IP.

KWladimir
Сообщения: 15
Зарегистрирован: 29 ноя 2006, 16:13

Сообщение KWladimir » 05 дек 2006, 22:51

Да, теперь понятно.
В качестве имени сервера я оставлял localhost, подразумевая "localhost" == "тута".
А оно, видимо, транслировало localhost в 127.0.0.1 и приходило к выводу, что это TCP/IP.

Теперь для embedded указываю сервер = пустая строка, и всё работает.

Спасибо!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 06 дек 2006, 00:11

транслировало localhost в 127.0.0.1 и приходило к выводу, что это TCP/IP
localhost это всегда 127.0.0.1, и tcp. Поэтому "оно" никуда ничего не транслирует. Embedded так и работает - пока имя сервера не указано, пытается с базой работать сам. Как только указан сервер - становится обычным клиентом аки fbclient/gds32.

это только Yaffil Personal если по localhost не обнаруживал на этой машине сервак, переключался на локальный протокол.

KWladimir
Сообщения: 15
Зарегистрирован: 29 ноя 2006, 16:13

Сообщение KWladimir » 06 дек 2006, 09:11

Embedded так и работает - пока имя сервера не указано, пытается с базой работать сам. Как только указан сервер - становится обычным клиентом аки fbclient/gds32.
Так embedded-библиотека может работать и как клиент стационарного сервера тоже?
Т.е. не надо делать две разных инсталляшки клиентской программы - достаточно той, что embedded?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 06 дек 2006, 10:01

Так embedded-библиотека может работать и как клиент стационарного сервера тоже?
Т.е. не надо делать две разных инсталляшки клиентской программы - достаточно той, что embedded?
ну епрст... мы ведь сначала зададим вопросов тучу, а FAQ читать не будем, да?
http://www.ibase.ru/ibfaq.htm#embedded

Ответить