Russian Qt Forum
Май 05, 2024, 22:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Доступ к базе Firebird без запущеного сервера.  (Прочитано 12595 раз)
Jkc
Гость
« : Октябрь 07, 2005, 17:37 »

Как можно осуществить доступ к базе данных Firebird без запущеного сервера? Я слышал что базу Firebird можно использовать напрямую без сервера, нужно только поместить fbembed.dll в папку пректа и можно работать с базой без сервера. Если кто знает подскажите.
Записан
Rainbow
Гость
« Ответ #1 : Октябрь 07, 2005, 18:26 »

Это тоже что будешь писать свой сервер?
Записан
Jkc
Гость
« Ответ #2 : Октябрь 10, 2005, 00:25 »

так как его написать?
Записан
Orlov_O
Гость
« Ответ #3 : Октябрь 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" ковырять :-(

хееелп ми
Записан
Jkc
Гость
« Ответ #4 : Октябрь 12, 2005, 18:39 »

Не могли бы вы выслать мне этот фаил.
civ@ua.fm
« Последнее редактирование: Январь 29, 2008, 13:44 от Jkc » Записан
Jkc
Гость
« Ответ #5 : Октябрь 13, 2005, 02:07 »

Нашел фаил fbembed.dll переместил в папку пректа и  переименовал на gds32.dll но безуспешно.
что я не так делаю?
Код:

#define DRIVER       "QIBASE"  /* see the Qt SQL documentation for a list of available drivers */
#define DATABASE     "E:\\\\bases\\TEST.FDB" /* the name of your database */
#define USER         "SYSDBA"   /* user name with appropriate rights */
#define PASSWORD     "masterkey"   /* password for USER */
//#define HOST         "localhost" /* host on which the database is running */  //  host пробовал с хостом и без

...............................
...............................

 QSqlDatabase * db = QSqlDatabase::addDatabase( DRIVER );
    db->setDatabaseName( DATABASE );
    db->setUserName( USER );
    db->setPassword( PASSWORD );
 //  db->setHostName( HOST );
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Октябрь 13, 2005, 09:39 »

А как ты драйвер базы данных подгружаешь? И какой?  :?:
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Jkc
Гость
« Ответ #7 : Октябрь 13, 2005, 23:10 »

В папке sqldrivers  сгенерировались следующие файлы
qsqlibase.dll
qsqlibase.exp
qsqlibase.lib
для генерации я использовал либы Firebird a.
Записан
ya_aalex
Гость
« Ответ #8 : Ноябрь 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* - что то для работы с многопоточностью
« Последнее редактирование: Ноябрь 17, 2011, 10:11 от ya_aalex » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #9 : Ноябрь 17, 2011, 11:06 »

Для работы с FireBird без запущенного сервера необходимо использовать Embedded версию программы, для для сборки плагина и его совмещения с Qt необходимо проделать следующее:
спасибо.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
ya_aalex
Гость
« Ответ #10 : Март 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...)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 23.