Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Jkc от Октября 07, 2005, 17:37 Как можно осуществить доступ к базе данных Firebird без запущеного сервера? Я слышал что базу Firebird можно использовать напрямую без сервера, нужно только поместить fbembed.dll в папку пректа и можно работать с базой без сервера. Если кто знает подскажите.
Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Rainbow от Октября 07, 2005, 18:26 Это тоже что будешь писать свой сервер?
Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Jkc от Октября 10, 2005, 00:25 так как его написать?
Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Orlov_O от Октября 11, 2005, 13:04 юзаю скачанный года 2 назад fembedded.dll, переименнованнй в gds32.dll. В 5ом билдере эта дллка через delay load вшивается прямо в выходной .exe . В 6м билдере такая фишка не прокатывает, но если положить длл рядом с exe всё работает так же. Дллина эта даёт возможность компонентам IBExpress работать в своё удовольствие без внешнего сервера. В этой dll реализован сам сервер fb1.5 (она и весит 1.5 метра). Вроде как функции доступа к серверу заменены функциями самого сервера :-)
неудобства: работает мееедлеееннее внешнего сервера, и хз как юзерские аккаунты менять (хотя бы пароль sysdba). Всё остальное пофиг. А вот как её юзать для qt или чего-нить ещё я хз. :-( Сейчас как раз хочу одну штуковину пересаживать с vcl на qt а тут такой вот касяк :-( Чувствую, придётся "интерфейс gds32.dll" ковырять :-( хееелп ми Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Jkc от Октября 12, 2005, 18:39 Не могли бы вы выслать мне этот фаил.
civ@ua.fm Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Jkc от Октября 13, 2005, 02:07 Нашел фаил fbembed.dll переместил в папку пректа и переименовал на gds32.dll но безуспешно.
что я не так делаю? Код:
Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Racheengel от Октября 13, 2005, 09:39 А как ты драйвер базы данных подгружаешь? И какой? :?:
Название: Доступ к базе Firebird без запущеного сервера. Отправлено: Jkc от Октября 13, 2005, 23:10 В папке sqldrivers сгенерировались следующие файлы
qsqlibase.dll qsqlibase.exp qsqlibase.lib для генерации я использовал либы Firebird a. Название: Re: Доступ к базе Firebird без запущеного сервера. Отправлено: ya_aalex от Ноября 17, 2011, 10:09 Для работы с FireBird без запущенного сервера необходимо использовать Embedded версию программы, для для сборки плагина и его совмещения с Qt необходимо проделать следующее:
Сборка библиотеки в Qt 2010.05. 1) Скачаваем с официального сайта FireBird версии сервера Superclassic / Classic и Embedded (лучше в архивах, иначе придётся устанавливать). 2) Распаковываем архив сервер Classic в папку, например - "C:\FB". 3) Заходим в папку с исходниками через консоль cmd: "cd C:\Qt\2010.05\qt\src\plugins\sqldrivers\ibase" В QtSDK iBase находится в папке - "C:\QtSDK\QtSources\...". 4) Выполняем команду: (лучше перед этим добавить в "Система"->"Дополнительные парметры системы"->""Переменные среды"->"Системные переменные"->"Path" строчку ";C:\Qt\2010.05\qt\bin;C:\Qt\2010.05\mingw\bin") "qmake "INCLUDEPATH+=C:/FB/include" "LIBS+=C:/FB/lib/fbclient_ms.lib" ibase.pro" 5) Выполняем команду: "mingw32-make.exe all" ("C:\Qt\2010.05\mingw\bin\mingw32-make.exe all") 6) После удачной сборки, библиотеки(qsqlibase4.dll, qsqlibased4.dll, libqsqlibase4.a, libqsqlibased4.a) сами перепишутся в папку "C:\Qt\2010.05\qt\plugins\sqldrivers". С их помощью можно работать при условии что есть FireBird Server(установлен на этой машине или на какой-то другой(по сети)). В QtSDK библиотеки должны лежать в папке - "C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers" для того чтобы сам Qt их мог найти. Для работы самой программы нужна одна из библиотек, в зависимости от того debug или release - qsqlibased4.dll или qsqlibase4.dll. Библиотека должна лежать в папке "sqldrivers" созданной рядом с exe. Например exe файл у нас лежит в папке "C:\Qt\2010.05\Test" - тогда библиотека "qsqlibased4.dll" должна быть в "C:\Qt\2010.05\Test\sqldrivers". Если мы хотим просто работать с сервером FireBird, то к exe файлу нужно положить библиотеку "fbclient.dll" из нашей папки "C:\FB". 7) Далее нам нужно сделать что бы мы могли работать без установленного FireBird Server-а. Распаковываем Embedded куда либо. 8 ) В распакованной папки Embedded переименовываем "fbembed.dll" в "fbclient.dll". 9) Переписываем наш переименованный файл "fbclient.dll" к exe файлу(заменяем если мы туда складывали обычный "fbclient.dll"). 10) Туда же складываем из каталога Embedded файлы: firebird.msg, ib_util.dll, все файлы начинающиеся с icu*, каталог intl, каталог udf. 11) Как было написано в одной инструкции если планируете использовать псевдонимы для доступа к БД, то потребуется файл aliases.conf, а если вам потребуется указать специфичные настройки БД (например, местоположение БД), то не забудьте добавить и файл firebird.conf. 12) Как было написано в той же инструкции: в FireBird Embedded уровень доступа не проверяется, к БД может подключаться любой, кто имеет физический доступ к файлу БД. Доступ к БД осуществляется по локальному протоколу, т.е. вместо указания имени хоста (localhost etc.) необходимо указывать местоположение файла БД. Подключенный клиент блокирует файл БД, т.е. одновременно с БД может работать только один пользователь (правда встраиваемые решения редко разрабатываются как многопользовательские). 13) Что бы не получить Сообщение с ошибкой "Unable to complete network request to host..." в исходном коде не нужно указывать HostName("setHostName"). Примерчик кода: QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE"); ui->comboBox->addItems(db.drivers()); db.setDatabaseName("STAND.FDB"); db.setUserName("SYSDBA"); db.setPassword("masterkey"); if ( !db.open() ) { QSqlError er = db.lastError(); QMessageBox::information(0, "Error", er.text()); } Ссылка на страницу с которой была взята некоторая информация: "http://codedchaos.blogspot.com/2011/07/qt-qibase-qt-firebird-embedded.html". fbembed.dll включает в себя клиент и сервер Firebird Super Server. firebird.msg файл содержит сообщения сервера (в основном об ошибках). Каталог "intl" - файлы gdsintl.dll, fbintl.dll с альтернативными наборами кодировок. Каталог "udf" (User Defined Functions) - используется для запросов или косвенно в триггерах и процедурах базы данных ib_util.dll определяет какие библиотеки следует использовать для аллокации блоков памяти, набор полезных UDF. icu* - что то для работы с многопоточностью Название: Re: Доступ к базе Firebird без запущеного сервера. Отправлено: panAlexey от Ноября 17, 2011, 11:06 Для работы с FireBird без запущенного сервера необходимо использовать Embedded версию программы, для для сборки плагина и его совмещения с Qt необходимо проделать следующее: спасибо.Название: Re: Доступ к базе Firebird без запущеного сервера. Отправлено: ya_aalex от Марта 29, 2012, 10:45 А под linux без запущенного сервера никто работать не пробовал?
С сервером вот так: //Скачиваем и распаковываем server. "/home/user/qtsdk-2010.05/qt/bin/qmake "INCLUDEPATH+=/home/user/Загрузки/FirebirdCS-2.5.1.26351-0.i686/buildroot/opt/firebird/include" "LIBS+=/home/user/Загрузки/FirebirdCS-2.5.1.26351-0.i686/buildroot/opt/firebird/lib/libfbclient.so" ibase.pro" "make all" "make install" //устанавливаем сам сервер "apt-get install firebird2.5-super" (sudo apt-g...) //настраиваем сервер "dpkg-reconfigure firebird2.5-super" (sudo dpkg-....) там ввести: "masterkey" //устанавливаем права на файл базы "chmod 666 CRITIC.FDB" (sudo chmod ...) //запускаем сервер, если не запущен "/etc/init.d/firebird2.5-super start" (sudo /et...) |