Название: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 15:32 Работал на SQlite и понял что она мне не подходит. Прочитал форум но некоторые вещи мне непонятны.
1) Хочу собрать FireBird так чтобы можно было просто скопировать необходимые файлы (в папку с exe) и работать с ним (в случае переноса на другую машину). Это называется статическая линковка? http://www.prog.org.ru/topic_1983_0.html Что такой статически скомпонованный драйвер? Один файл, при закидывании которого все работает? :) Название: Re: Qt + fireBird Отправлено: break от Сентябрь 30, 2010, 15:49 Это называется Embedded сервер - со стороны Qt тебе так и так просто надо собрать ibase драйвер. Ему все равно с полноценным или embedded сервером будешь работать.
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 16:01 В той теме он говорит. Изменить файл pri.
А вот мой файл .pri содержит несколько строк. Код: win32 { Мой файл pri. Код: contains(sql-drivers, all ) { Может проще собрать mySQL? Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 16:18 Код: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); Нормально проходит. Ничего не делал, только скопировал в корень экзешника папку "sqldrivers" и туда закинул "libmysql.dll". В списке драйверов(QSqlDatabase::drivers()) - нету QMYSQL. Что то по моему тут неправильно. Название: Re: Qt + fireBird Отправлено: vipet от Сентябрь 30, 2010, 16:28 Работал на SQlite и понял что она мне не подходит. Прочитал форум но некоторые вещи мне непонятны. 1) Хочу собрать FireBird так чтобы можно было просто скопировать необходимые файлы (в папку с exe) и работать с ним (в случае переноса на другую машину). Это называется статическая линковка? http://www.prog.org.ru/topic_1983_0.html Что такой статически скомпонованный драйвер? Один файл, при закидывании которого все работает? :) Для того, чтобы просто все скопировать в папку с .exe-шником твоей проги, не нужно собирать файрбёрд. Скачиваешь .zip c Firebird Embedded и раcпаковываешь архив в ту папку. Всё. Статическая линковка - это если хочешь, чтобы кроме твоего exe-шника больше никаких dll-ек не нужно было. Но тогда и MS CRT надо статически линковать (есть статься на wiki про это). Потом сам Firebird Embedded, если мне не изменяет память слинкован с MS CRT от 2005 студии, т.е. в этом случае его нужно видимо пересобрать. Короче, если без гемора, то скопируй fbembed.dll и другие dll-ки и файлы из его архива в папку с .exe-шником и не парься. Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 16:54 И как же указать QSqlDatabase что надо именно firebird загружать?
Название: Re: Qt + fireBird Отправлено: Jo от Сентябрь 30, 2010, 17:10 1. Скопировать fbclient_ms.lib из D:\Firebird\Firebird_2_1\lib и переименовал в fbclient.lib в папку проекта D:\Qt\4.6.0\src\plugins\sqldrivers\ibase\
2. Затем открыть проект (я использовал QtCreator) D:\Qt\4.6.0\src\plugins\sqldrivers\ibase\ibase.pro 3. В конфигурации пректа в разделе этапы сборки в дополнительных параметрах указал такую строчку: -o Makefile INCLUDEPATH+=D:\Firebird\Firebird_2_1\include LIBS+=-lfbclient 4. Собрать в режиме дебаг и релиз В результате вышеописанных действий в папке D:\Qt\4.6.0\plugins\sqldrivers появились нужные файлы qsqlibase4.* и qsqlibased4.* собственно драйвер есть... Дальше при использовании embedded версии fb необходимо переименовать файл fbembed.dll в fbclient.dll и положить в папку с .exe файлом. (ну и в папку с проектом тоже можешь запулить) QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE"); и погнал. P.S. Пути естественно исправь на свои. Должно получиться. Удачи! Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 20:06 Спасибо тебе большое! Все очень подробно.
Дошел до открытия проекта. Код: C:/Qt/2010.02.1/qt/src/plugins/sqldrivers/ibase/../../../sql/drivers/ibase/qsql_ibase.h:48: error: ibase.h: No such file or directory Ругается. Код: C:/Qt/2010.02.1/qt/src/sql/drivers/ibase/qsql_ibase.h:87: error: expected ')' before 'connection' на строку в файле qsql_ibase.h Код: explicit QIBaseDriver(isc_db_handle connection, QObject *parent = 0); Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 20:50 не хватает заголовочных файлов firebird
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 20:56 В Qt Creator вписал такую строчку (по кнопке "Подробнее" в строку "Параметры Make"):
-o Makefile INCLUDEPATH+=C:\Firebird\Firebird_2_1\include LIBS+=-lfbclient Он не шерстит по директории include, там ведь и лежат хидеры? Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 20:58 ну вам же должно быть виднее лежат они там или нет.... посмотрите...
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 20:59 А вообще взял я из папки firebird все дллки из папки bin и кинул в корень exe и в папку /sqldrivers.
Код: QSqlDatabase dbs = QSqlDatabase::addDatabase("QIBASE"); _is_open = false; drList не содержит QIBASE. Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 21:02 и на кой черт вы их туда кинули... ?? в папке sqldrivers есть sqlibase4.* и qsqlibased4.* ??
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 21:04 Та папка лежит в корневой моего exe.
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 21:07 ну вам же должно быть виднее лежат они там или нет.... посмотрите... Лежат. Но ведь все равно ругается. Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 21:12 каким компилятором пользуетесь??
Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 21:20 MiniGW.
Crossly, А просто взять dll как сказано было выше и прикрутить их не получится? Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 21:41 открываем консоль.... и пишем....
Код: cd %QTDIR%\src\plugins\sqldrivers\ibase а что вы собственно собираетесь прикрутить... dll для начала собрать надо... Название: Re: Qt + fireBird Отправлено: Astrologer от Сентябрь 30, 2010, 22:05 Собрал. Появились файлы в директории c:\Qt\2010.02.1\qt\plugins\sqldrivers\
беру всю папку и копирую в папку debug с моим проектом. Запускаю. Код: QSqlDatabase dbs = QSqlDatabase::addDatabase("QIBASE"); В drList есть "QIBASE". Однако _is_open = false. Я хочу чтобы база сохранялась в файл. Я так делал с sqlite. Но она вроде же заточена под это. А тут что нужно сделать чтобы похожим образом работала на локальной машине? Название: Re: Qt + fireBird Отправлено: crossly от Сентябрь 30, 2010, 22:18 скачать firebird embedded и положить в папку с exe (переименовав fbembed.dll в fbclient.dll).... и не забыть создать базу...
Название: Re: Qt + fireBird Отправлено: Astrologer от Октябрь 01, 2010, 11:06 При использовании sqlite база создавалась когда я открывал QsqDatabase. Здесь так не получается(
Скачал embedded с http://sourceforge.net/projects/firebird/files/firebird-win32/2.1.3-Release/Firebird-2.1.3.18185-0_Win32_embed.zip/download Название: Re: Qt + fireBird Отправлено: Jo от Октябрь 01, 2010, 11:37 Не дружище, тебе надо скачать IDE для создания баз.
поищи тут http://ibase.ru/download.htm дык ты драйвер поставил? Название: Re: Qt + fireBird Отправлено: Astrologer от Октябрь 01, 2010, 11:50 Jo Да, драйвер поставил. Теперь мне надо создать файл в котором будет лежать база. Вроде разница только в драйвере, в SQlite все работало. Допустим надо создать файл "myBase.dbs".
Код: QSqlDatabase dbs = QSqlDatabase::addDatabase("QIBASE"); Название: Re: Qt + fireBird Отправлено: Hellraiser от Октябрь 01, 2010, 12:01 Только SQLite позволяет указывать при подключении имя несуществующего файла (он его просто создаст - т.е. будет пустая база без таблиц). Все остальные СУБД требуют существующую базу / файл. Поэтому Jo правильно предлагает найти программу для создания базы (хотя можно и консольными утилитами из комплекта).
Название: Re: Qt + fireBird Отправлено: crossly от Октябрь 01, 2010, 13:11 в составе embedded есть утилита isql .... запускаем...
Код: create database 'имя файла' user 'sysdba'; а вообще надо взять документацию по firebird... там все написано... Название: Re: Qt + fireBird Отправлено: sne от Октябрь 01, 2010, 14:52 На счет встроеного fb яхз, на полноценной версии СУБД, чуть поменял в нужную мне сторону qtfirebirdibppsqldriver. Возможно поможет.
Название: Re: Qt + fireBird Отправлено: Astrologer от Октябрь 01, 2010, 15:15 Я скачал IBExpert. Создал базу, подключился, все работает. Огромное спасибо за терпение и помощь, оcобенно Jo, Crossly, Hellraiser, SNE, Break, Vipet. :)
|