Страница 1 из 1

IBPP и Firebird Embedded

Добавлено: 05 дек 2006, 14:26
KWladimir
(Вообще-то 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?

Добавлено: 05 дек 2006, 14:59
Dimitry Sibiryakov
10061 это ошибка TCP/IP. Embedded не работает по TCP/IP.

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

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

Спасибо!

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

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

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

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