Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как в Qt5 использовать библиотеку pqxx?  (Прочитано 2102 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Сейчас опции компиляции:
$ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DAPPLICATION_NAME=\"lessons\" -DQT_NO_DEBUG -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/qt5 -I/usr/include/qt5/QtMultimedia -I/usr/include/qt5/QtWidgets -lpqxx -lpq -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -Ibuild -I. -o build/main.o main.cpp
In file included from main.cpp:1:0:
mainwindow.h:35:2: error: ‘connection’ does not name a type
  connection C;
Этот тип "connection" объявлен в самой pqxx. Инклюд в начале заголовочного есть. В файле проекта ничего не добавлял.
Опции "-lpqxx -lpq" вставил в Makefile.
« Последнее редактирование: 05 Марта 2018, 17:54:39 от Dexel »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #1 : 05 Марта 2018, 18:51:29 »
Простите, но что за глупости Вы делаете? Зачем использовать в Qt-проекте стороннюю библиотеку для работы с БД PostgreSQL? Все делается штатными возможностями Qt:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
 db.setHostName("acidalia");
 db.setDatabaseName("customdb");
 db.setUserName("mojito");
 db.setPassword("J0a1m8");
 bool ok = db.open();
 while (query.next()) {
        QString country = query.value(0).toString();
        doSomething(country);
    }

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #2 : 06 Марта 2018, 01:19:42 »
Их драйвер на версии PostgreSQL 10.1 не работоспособен.
И когда его допишут... если вообще когда либо допишут. Уже месяц жду.
А все базы уже перелил из 9.6 на 10.1
Быстрее другую библиотеку подключить, чем ждать пока допишут...
« Последнее редактирование: 06 Марта 2018, 01:21:24 от Dexel »

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #3 : 06 Марта 2018, 01:44:57 »
Dexel, а как же тогда у меня работает Qt-приложение с postgresql 10.2 в ArchLinux? Конкретно, что у Вас не работает?

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #4 : 06 Марта 2018, 11:59:44 »
В Арче то собирали пакет libpq5, а не deb ставили?
Сравнили Arch с бубном ;)

Вот что:
The server version of this PostgreSQL is unknown, falling back to the client version.

И это стабильно на всех бубнах что есть в наличии, там где Postgres 10.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #5 : 06 Марта 2018, 12:21:17 »
Что из pqxx пакетов установлено? Как инклуд прописан?
Для соединения с 10 наверняка pq тоже обновить надо.

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #6 : 06 Марта 2018, 18:40:58 »
В Арче то собирали пакет libpq5, а не deb ставили?
Никаких пакетов не собирал. Пакеты все штатные. Qt5 5.10.1 прекрасно работает с PostgreSQL 10.2. А что Вам мешает установить самую свежую версию библиотеки Qt с официальной страницы проекта? Если Вы говорите, что версия Qt 5.9.x не работает у Вас, то и не стоит ждать будущий выпуск Ubuntu 18.04, т.к. в репозиториях этого релиза Qt версии 5.9.3.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #7 : 10 Марта 2018, 13:13:14 »
aSmile, из pqxx установлены:i A libpqxx-3.1                     - C++ library to connect to PostgreSQL
i   libpqxx-3.1-dbg                 - C++ library to connect to PostgreSQL (debu
i   libpqxx-4.0                     - C++ library to connect to PostgreSQL     
i   libpqxx-dev                     - C++ library to connect to PostgreSQL (deve

Инклюд прописан как в документации:
#include <pqxx/pqxx>
В файле проекта, чтоб не править Makefile, нужно добавить:
LIBS += -lpqxx -lpq
Всё работает прекрасно.

archuser, я уже вернулся на Kubuntu-14.04, потому как на 17.10 ещё и Blender глючит. Тут версия Qt 5.2.1.
Как буду на Kubuntu-17.10 посмотрю версию, отпишусь. Может обновлю до 5.9, если она не обрушит ОСь  ;)

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #8 : 18 Марта 2018, 12:05:23 »
Сейчас на Kubuntu 17.10
Версия Qt на ней 5.9

$ qmake -v
QMake version 3.1
Using Qt version 5.9.1 in /usr/lib/x86_64-linux-gnu

Исходник в аттаче, выдающий при запуске лишь:
$ ./app
The server version of this PostgreSQL is unknown, falling back to the client version.

Код: (cpp) [Выделить]
        dba = QSqlDatabase::addDatabase("QPSQL", execname);
        dba.setHostName(db_host);
        dba.setDatabaseName(db_name);
        dba.setUserName(db_user);
        dba.setPassword(db_pass);
        dba.setPort(db_port);
        bool ok = dba.open();
        qDebug() << "db open" << ok;
        if(false == ok)
        {
                QString message = tr("Нет соединения с DB. Name: %1 User: %2").arg(db_name).arg(db_user);
                QMessageBox::critical(0, tr("Ошибка connect DB"), message);

                qFatal("Не возможно подключиться к базе.");
        }
        else
        {
                query = new QSqlQuery(execname, dba);

                QString sql = "SELECT * FROM members WHERE id=0";
                query->exec();
                if(query && query->next())
                {
                        qDebug() << query->value("id").toString();
                }
        }

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #9 : 18 Марта 2018, 13:40:27 »
Dexel, я верю, что версия 5.9 отказывается работать с PostgreSQL 10.1. Но поверьте и Вы мне. Установите Qt 5.10.1 и настройте проект на использование именно этой версии библиотеки. Все будет работать.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в Qt5 использовать библиотеку pqxx?
« Ответ #10 : 18 Марта 2018, 22:05:58 »
archuser, спасибо огромное! Работает!

Версия 5.10.1 с PostgreSQL 10.1

 

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