Qt - Сборка драйвера PSQL: различия между версиями
ILobster (обсуждение | вклад) (Новая страница: «right right|110px __TOC__ Для работы <code>Qt</code> с СУБД <code>PostgreSQL</code>, кр...») |
ILobster (обсуждение | вклад) м (→Требования) |
||
Строка 17: | Строка 17: | ||
* <code>PostgreSQL 8.4.12-1 x32</code>. | * <code>PostgreSQL 8.4.12-1 x32</code>. | ||
Однако, это не означает, что на других версиях ОС и ПО ничего не получится. | Однако, это не означает, что на других версиях ОС и ПО ничего не получится. Здесь приведены лишь проверенные. | ||
В системную переменную <code>PATH</code> должны быть добавлены следующие пути: | В системную переменную <code>PATH</code> должны быть добавлены следующие пути: | ||
Строка 26: | Строка 26: | ||
* <code>D:\Programs\PostgreSQL\lib</code>. | * <code>D:\Programs\PostgreSQL\lib</code>. | ||
Пути до файлов библиотек и утилит <code>Qt</code>, в общем-то, не обязательны, но всё же не повредит добавить их в <code>PATH</code> | После этого можно (и желательно) перезагрузить компьютер. | ||
Пути до файлов библиотек и утилит <code>Qt</code>, в общем-то, не обязательны, но всё же не повредит добавить их в <code>PATH</code>. | |||
== Сборка == | == Сборка == |
Версия от 10:40, 7 декабря 2012
Для работы Qt
с СУБД PostgreSQL
, кроме драйвера ODBC
можно (а в некоторых случаях необходимо) использовать драйвер QPSQL
. Но в виде скомпилированной библиотеки изначально его нет, потому сначала его необходимо собрать из исходников.
В статье пойдёт речь о сборке драйвера QPSQL
в среде ОС MS Windows
.
Все пути к файлам и каталогам, приведённые в статье, скорее всего будут отличаться от ваших, будьте внимательны.
Требования
- ОС:
Microsoft Windows 7 Professional x32
;Microsoft Windows 7 Professional x64
;Microsoft Windows XP Home x32
;
Qt 4.8.1
(установленный с исходниками (QtSouces));PostgreSQL 8.4.12-1 x32
.
Однако, это не означает, что на других версиях ОС и ПО ничего не получится. Здесь приведены лишь проверенные.
В системную переменную PATH
должны быть добавлены следующие пути:
;D:\Programs\Qt\Desktop\Qt\4.8.1\mingw\bin
;D:\Programs\Qt\mingw\bin
D:\Programs\PostgreSQL\bin
;D:\Programs\PostgreSQL\include
;D:\Programs\PostgreSQL\lib
.
После этого можно (и желательно) перезагрузить компьютер.
Пути до файлов библиотек и утилит Qt
, в общем-то, не обязательны, но всё же не повредит добавить их в PATH
.
Сборка
На самом деле, всё очень просто. Исходники драйвера QPSQL
лежат в каталоге QtSources
, достаточно лишь открыть его проектный файл в QtCreator
и выполнить сборку.
Однако, это звучит слишком просто, чтобы быть правдой. И в самом деле - есть ряд некоторых нюансов.
Идём в D:\Programs\Qt\QtSources\4.8.1\src\plugins\sqldrivers\psql\
.
Там лежит файл проекта psql.pro
, открываем его в QtCreator
. Он выцепит вместе с собой все остальные необходимые проекты. Нам надо изменить проект D:\Programs\Qt\QtSources\4.8.1\src\sql\drivers\psql\qsql_psql.pri
(только не на диске его искать и открывать в блокноте, а именно тут, в проекте - в дереве файлов проекта развернуть ветку psql
и редактировать файл проекта), комментируем в нём следующие строки:
HEADERS += $$PWD/qsql_psql.h
SOURCES += $$PWD/qsql_psql.cpp
unix|win32-g++* {
LIBS *= $$QT_LFLAGS_PSQL
# !contains(LIBS, .*pq.*):LIBS += -lpq
# QMAKE_CXXFLAGS *= $$QT_CFLAGS_PSQL
#} else {
!contains(LIBS, .*pq.*):LIBS += -llibpq -lws2_32 -ladvapi32
}
Теперь дописываем следующее в файл проекта psql.pro
:
INCLUDEPATH += D:/Programs/PostgreSQL/include \
D:/Programs/PostgreSQL/lib
LIBS += -L$$PWD/ -llibpq
Если INCLUDEPATH
не сработает, и он потребует заголовочные файлы, то найдите их по именам в каталоге D:/Programs/PostgreSQL/include
и скопируйте в каталог с проектом D:\Programs\Qt\QtSources\4.8.1\src\plugins\sqldrivers\psql\
.
Идём в D:\Programs\PostgreSQL\lib\
и копируем оттуда libpq.dll
(может лежать в другой директории, ищите поиском) в D:\Programs\Qt\QtSources\4.8.1\src\plugins\sqldrivers\psql\
.
Теперь можно выполнить сборку.
Получившийся qsqlpsqld4.dll
помещаем в D:\Programs\Qt\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers\
.
Теперь не забудьте вернуть назад все изменения в файлах psql.pro
и qsql_psql.pri
.
Проверка
Создаём проект для проверки - GUI-приложение, например. Кнопка и текстовое поле. По нажатию на кнопку в поле будут выводиться имена всех имеющихся драйверов и осуществляться попытка добавить базу данных с драйвером QPSQL
.
В файле проекта дописать:
QT += sql
В исходниках формы на обработчик кнопки:
void MainWindow::on_pushButton_clicked()
{
// вывод списка строк - имён драйверов
QStringList list = QSqlDatabase::drivers();
for(int x = 0; x < list.length(); x++)
ui->log->append(list.at(x));
// попытка создания подключения к БД посредством драйвера QPSQL
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
ui->log->append(tr("---<br><b>QPSQL-driver is ")
+(db.isValid()
? tr("<font color=green>OK</font></b>")
: tr("<font color=red>NOT</font></b>")));
}
Скриншот приложения:
Загрузить исходники проверочного проекта можно здесь.
Если по материалам статьи ничего не получилось, то попробуйте сделать по этой инструкции. У автора статьи, однако, ничего не получилось как раз по ней, после чего был опробован описываемый способ и написана настоящая статья.