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

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

Страниц: 1 2 [3] 4 5 ... 14   Вниз
  Печать  
Автор Тема: Транзакции Interbase  (Прочитано 146019 раз)
Dimich
Гость
« Ответ #30 : Январь 27, 2010, 09:11 »

axax,
можете ли Вы перелицензировать qtfirebirdibppsqldriver под LGPL или двойной LGPL/GPL лицензией?
Qt, начинас с версии 4.5, поддерживет лицензию LGPL,  у IBPP BSD-подобная лицензия.
Многие дполнительные библиотеки к Qt перелицензировались под лицензией LGPL (Qwt, OpenRPT и т.д.). Может, логичнее было выпуск qtfirebirdibppsqldriver под лицензией LGPL?
Записан
sarbash
Гость
« Ответ #31 : Февраль 12, 2010, 22:50 »

У меня установлена Qt версии 4.6.0
Попытался собрать плагин - собирается. Скопировал на место, пытаюсь запустить программу, получаю ошибку:

QSqlDatabase: QFIREBIRD driver not loaded
QSqlDatabase: available drivers: QIBASE QSQLITE QODBC3 QODBC
D:\projects\irr-ad\debug\irr-ad.exe завершился с кодом 1

Подскажите, пожалуйста, что сделать, чтобы он заработал?
Вроде бы правильно положил библиотеки:
%QTDIR%\plugins\sqldrivers\qsqlibase4.dll
%QTDIR%\plugins\sqldrivers\libqsqlibase4.a

В программе вызов делается так:

Код:
bool create_connection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QFIREBIRD");
    db.setConnectOptions("ISC_DPB_LC_CTYPE=UTF8");
    // TODO после отладки установить пусть к бд:
    // db.setDatabaseName(qApp->applicationDirPath() + "db/IRR-AD.FDB");
    db.setDatabaseName("../db/IRR-AD.FDB");
    db.setUserName("sysdba");
    if (!db.open()) {
        QMessageBox::critical(0, qApp->applicationName(),
                              QString("Не удалось соединиться с БД:\n%1").arg(
                              db.lastError().databaseText()));
        return false;
    }
    return true;
}
Записан
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #32 : Февраль 13, 2010, 01:30 »

...
QSqlDatabase: available drivers: QIBASE QSQLITE QODBC3 QODBC
...
%QTDIR%\plugins\sqldrivers\qsqlibase4.dll
%QTDIR%\plugins\sqldrivers\libqsqlibase4.a
...
В программе вызов делается так:

Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QFIREBIRD");
...

судя по всему ты собрал драйвер для  IBASE из самого Qt.
Сырцы и собранные dll QFIREBIRD лежат на http://code.google.com/p/qtfirebirdibppsqldriver/

Записан
sarbash
Гость
« Ответ #33 : Февраль 13, 2010, 10:24 »

Если бы всё так просто было...

Поскипаем неважное...
Код:
Содержимое папки C:\devel\Qt\2009.05\qt\plugins\sqldrivers
...
12.02.2010  22:29             2 200 libqsqlfirebird.a
...
12.02.2010  22:29           833 536 qsqlfirebird.dll
...
              15 файлов      5 451 375 байт
               2 папок  17 727 313 408 байт свободно

собирал из

Код:
svn checkout http://qtfirebirdibppsqldriver.googlecode.com/svn/trunk/ qtfirebirdibppsqldriver-read-only

Почему не видит не подхватывает - ума не приложу... попробую обновиться до 4.6.1
Постом выше я привёл функцию по установке коннекта - разве я там неправильно написал?
Записан
gigabyte
Гость
« Ответ #34 : Февраль 13, 2010, 10:58 »

Переименуй
libqsqlfirebird.a -> libqsqlfirebirdd.a
qsqlfirebird.dll -> qsqlfirebirdd.dll
И убедись что ти собираешь именно debug!!!!!
Записан
sarbash
Гость
« Ответ #35 : Февраль 13, 2010, 13:31 »

Большое спасибо, простите за мою глупость, нельзя столько работать (это я о себе)... Грустный
Проблема была в том, что для драйвера собран был релиз (это по-умолчанию настроено), а рабочий проект с использованием драйвера собирается в дебаг-версии. Естественно, драйвер не был найден, а я вчера бился и понять не мог, что делаю не так. Вопрос решён, всем большое спасибо за участие!

Искренне благодарен за плагин, т.к. неизбежно пришлось бы самому писать, если бы не было готового. То, что идёт в комплекте, -- жалкое убожество, особенно после дельфёвых IBX компонент.

2gigabyte: Особая благодарность, Вы навели меня на верную мысль. А то у меня уже ум за разум заходить начал, но это личные проблемы, оффтоп.

P.S. Осталось разобраться с кодировками...
Код:
Запускается D:\projects\irr-ad\debug\irr-ad.exe...
HookingD:\PROJECTS\IRR-AD\DEBUG\IRR-AD.EXE
D:\PROJECTS\IRR-AD\DEBUG\IRR-AD.EXERPH:Injecting code at start up
done...
QFBDriver::open: Unknown connection attribute 'ISC_DPB_LC_CTYPE=UTF8'
D:\projects\irr-ad\debug\irr-ad.exe завершился с кодом 0
Записан
sarbash
Гость
« Ответ #36 : Февраль 13, 2010, 13:36 »

...
QSqlDatabase: available drivers: QIBASE QSQLITE QODBC3 QODBC
...
%QTDIR%\plugins\sqldrivers\qsqlibase4.dll
%QTDIR%\plugins\sqldrivers\libqsqlibase4.a
...
В программе вызов делается так:

Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QFIREBIRD");
...

судя по всему ты собрал драйвер для  IBASE из самого Qt.
Сырцы и собранные dll QFIREBIRD лежат на http://code.google.com/p/qtfirebirdibppsqldriver/



Прошу прощения, я ввёл Вас в заблуждение, на самом деле я собирал естественно Ваш драйвер, а сюда ошибочно запостил листинг того, что в комплекте идёт. Я его до этого собирал. Это я вчера просто загнался, ещё раз простите великодушно. Я теперь уже разобрался, в чём был неправ.
Записан
gigabyte
Гость
« Ответ #37 : Февраль 13, 2010, 13:47 »

Цитировать
P.S. Осталось разобраться с кодировками...
см. Исходники драйвера и вместо
Код:
database.setConnectOptions("ISC_DPB_LC_CTYPE=WIN1251");
попробуй
Код:
database.setConnectOptions("CHARSET=WIN1251");
Записан
sarbash
Гость
« Ответ #38 : Февраль 13, 2010, 16:58 »

Уже. Как я понял, здесь сорцы выступают в качестве мануала. Улыбающийся
Записан
sarbash
Гость
« Ответ #39 : Февраль 13, 2010, 17:38 »

Переименуй
libqsqlfirebird.a -> libqsqlfirebirdd.a
qsqlfirebird.dll -> qsqlfirebirdd.dll
И убедись что ти собираешь именно debug!!!!!


Вместо этого я разные таргеты в проекте указал для дебага и релиза, там в issue на гуглокоде есть по этому поводу.
Записан
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #40 : Февраль 15, 2010, 19:28 »

Обновленная версия Qt SQL driver for Firebird with IBPP library.
http://code.google.com/p/qtfirebirdibppsqldriver

Изменения в версии 0.15
- fixed Produce different targets depengind on config (Debug Release) ( Issue 6 )
+ license under LGPL version 2.1
+ license under GPL version 3.0

Спасибо за пожелания и исправления.
Новые принимаются на http://code.google.com/p/qtfirebirdibppsqldriver/issues/list и на форуме.
Записан
arial
Гость
« Ответ #41 : Февраль 16, 2010, 15:30 »

У меня с Qt SQL driver for Firebird with IBPP library косяк.
В базе есть поле NUMERIC(6, 3).
QFIREBIRD возвращает его, как QVariant(int), а вот QIBASE возвращает, как положено, QVariant(double).
Т.е., если в БД хранится число 3,14, то QFIREBIRD возвращает QVariant(int, 3140), QIBASE, как положено, вернёт QVariant(double, 3.14).
Записан
gigabyte
Гость
« Ответ #42 : Февраль 16, 2010, 21:59 »

>axax
Думаю следует обратить внимание на qIBaseTypeName2 в исходниках родного interbase драйвера
Записан
arial
Гость
« Ответ #43 : Февраль 25, 2010, 15:43 »

Может уважаемый axax как-то прокомментирует пост о проблеме с полем numeric?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #44 : Февраль 25, 2010, 17:41 »

arial, напиши ему в ГуглоКод, может он там чаще мониторит
Записан

Юра.
Страниц: 1 2 [3] 4 5 ... 14   Вверх
  Печать  
 
Перейти в:  


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