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

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

Страниц: 1 2 3 [4] 5   Вниз
  Печать  
Автор Тема: Как организовать работу с БД FireBird 2.5 в среде Qt 4.8.4 + VC 2010?  (Прочитано 38217 раз)
Majestio
Гость
« Ответ #45 : Ноябрь 22, 2013, 19:57 »

Ну почему же - можно скомпилировать драйвер, используя x86 библиотеки, а подключаться к x64 файрберду )

Скажу про PostgreSQL, думаю с FireBird та же песня. Драйвер использует dll-ку от установленной БД, в случае c PostgreSQL - это libpq.dll (я его спецом из сорцов собирал в 2-х вариантах - x32 и x64). Для собранного приложение x32, нужен драйвер x32, и эта же dll-ка - x32, тогда можно. Но если на компе dll-ка только x64, та что с x64 инсталляцией, то для x32 - не заработает. Если только драйвер не будет самодостаточен, в чем сомневаюсь.

О подключении работающего клиента к БД - разговор не идет.
Записан
Majestio
Гость
« Ответ #46 : Ноябрь 22, 2013, 20:02 »

Вот эту dll (я же надеюсь, что именно эту?) надо скинуть в корень с проектом, в котором хочу использовать БД или в "c:\Windows" можно?
Надо ли ее переименовывать?

Драйвера ложатся в :
<каталог выполняемого файла>/plugins/sqldrivers
Если есть сопутствующие dll-kи от БД - либо рядом с exe, либо в системный каталог винды

и еще ....

Обычно делают 2 версии драйвера: для отладки и для релиза
« Последнее редактирование: Ноябрь 22, 2013, 20:04 от Majestio » Записан
Dzeto
Гость
« Ответ #47 : Ноябрь 22, 2013, 20:09 »

Обычно делают 2 версии драйвера: для отладки и для релиза

Уже вычитал что-то про make release. Так понял, что это и есть "команда" для создания релизной dll. Но не могу найти как ее применить
Записан
Majestio
Гость
« Ответ #48 : Ноябрь 22, 2013, 20:19 »

Уже вычитал что-то про make release. Так понял, что это и есть "команда" для создания релизной dll. Но не могу найти как ее применить

В Qt Creator'е слева, чуть выше зеленой стрелки выбирается тип сборки (отладка или выпуск).
Записан
Dzeto
Гость
« Ответ #49 : Ноябрь 22, 2013, 21:20 »

Код в MSVC2010:
Код:
#include "testbd.h"
#include "QSqlDatabase"
#include "QSqlError"
#include "QtSql"

TestBD::TestBD(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();
if(!ok)
{
QString str = db.lastError().text();
}
}

Что содержится в str = db.lastError().text()


Кинул qsqlibase4.dll в "d:\TestBD\TestBD\" и в "d:\TestBD\TestBD\Win32\Debug\"


Что пишет студия:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL7 QPSQL
« Последнее редактирование: Ноябрь 22, 2013, 21:22 от Dzeto » Записан
Majestio
Гость
« Ответ #50 : Ноябрь 22, 2013, 21:31 »

Кинул qsqlibase4.dll в "d:\TestBD\TestBD\" и в "d:\TestBD\TestBD\Win32\Debug\"

повторюсь:

<каталог выполняемого файла>/plugins/sqldrivers

qsqlibase4.dll - для Release
qsqlibased4.dll - для Debug
Записан
Dzeto
Гость
« Ответ #51 : Ноябрь 22, 2013, 21:48 »

Я вот начал читать книгу, которую Алекс посоветовал, но прочитал, конечно, совсем чуть-чуть, так что ничего не понимаю))

exe находится в "d:\TestBD\TestBD\Win32\Debug"
соответственно создаю директорию "d:\TestBD\TestBD\Win32\Debug\plugins\sqldrivers\"
и туда закидываю qsqlibase4.dll и qsqlibased4.dll.

Ошибка никуда не делась, значит что-то делаю не так.
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #52 : Ноябрь 22, 2013, 21:57 »

в "d:\TestBD\TestBD\Win32\Debug" нужно
положить fbclient.dll из каталога c:/Program Files/Firebird/Firebird_2_5/bin
Записан

Dzeto
Гость
« Ответ #53 : Ноябрь 22, 2013, 21:59 »

в "d:\TestBD\TestBD\Win32\Debug" нужно
положить fbclient.dll из каталога c:/Program Files/Firebird/Firebird_2_5/bin


Положил - ничего не изменилось\\
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #54 : Ноябрь 22, 2013, 22:02 »

соответственно создаю директорию "d:\TestBD\TestBD\Win32\Debug\plugins\sqldrivers\"
и туда закидываю qsqlibase4.dll и qsqlibased4.dll

На этапе отладки достаточно положить эти драйверы в каталог %QT_DIR%\plugins\sqldrivers\
Кстати, в каталог %QT_DIR%\bin можно закинуть и c:/Program Files/Firebird/Firebird_2_5/bin/fbclient.dll



Ошибка какая ?
Записан

lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #55 : Ноябрь 22, 2013, 22:06 »

Код
C++ (Qt)
....
QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
....
 

Что пишет студия:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL7 QPSQL

Загружаешь QIBASE а ошибка "QSqlDatabase: QMYSQL driver not loaded" ? ??
Записан

Dzeto
Гость
« Ответ #56 : Ноябрь 22, 2013, 22:27 »


Загружаешь QIBASE а ошибка "QSqlDatabase: QMYSQL driver not loaded" ? ??

Мой косяк. Я сперва скомпилировал "готовый" пример с сайта - не видел, что там загружается не тот драйвер.


соответственно создаю директорию "d:\TestBD\TestBD\Win32\Debug\plugins\sqldrivers\"
и туда закидываю qsqlibase4.dll и qsqlibased4.dll

На этапе отладки достаточно положить эти драйверы в каталог %QT_DIR%\plugins\sqldrivers\
Кстати, в каталог %QT_DIR%\bin можно закинуть и c:/Program Files/Firebird/Firebird_2_5/bin/fbclient.dll

Ошибка какая ?

Сделал так - ошибок никаких нет, но соединение не устанавливается.

Код:
TestBD::TestBD(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
//db.setHostName("bigblue");
db.setDatabaseName("d:\myDB.gdb");
db.setUserName("SYSDBA");
db.setPassword("masterkey");
bool ok = db.open();
if(!ok)
{
QString str = db.lastError().text();
}
}



Записан
Majestio
Гость
« Ответ #57 : Ноябрь 22, 2013, 22:39 »

http://www.prog.org.ru/topic_15063_15.html
Записан
Dzeto
Гость
« Ответ #58 : Ноябрь 22, 2013, 22:48 »


Я работаю с IBExpert.
myDB.gdb, Chess.fdb - существующие, не пустые базы в корне D:\

Другое дело, что они создавались еще при FireBird х64. Сейчас попробую создать еще БД под FireBird-ом нынешним.
« Последнее редактирование: Ноябрь 23, 2013, 10:44 от Dzeto » Записан
Dzeto
Гость
« Ответ #59 : Ноябрь 23, 2013, 10:44 »

Создал новую БД, кинул ее в корень. Изменил db.setDatabaseName("d:\myDB.gdb"); на db.setDatabaseName("d:\MYTESTBD.GDB");
0 эмоций
Записан
Страниц: 1 2 3 [4] 5   Вверх
  Печать  
 
Перейти в:  


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