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


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

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

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

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • InteS
Сейчас опции компиляции:
$ 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

  • Активист
  • *
  • Сообщений: 434
    • Просмотр профиля
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

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

Оффлайн archuser

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

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • InteS
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

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

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 434
    • Просмотр профиля
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

  • Автор темы
  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • InteS
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

  • Автор темы
  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • InteS
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.

Код: C++
  1.         dba = QSqlDatabase::addDatabase("QPSQL", execname);
  2.         dba.setHostName(db_host);
  3.         dba.setDatabaseName(db_name);
  4.         dba.setUserName(db_user);
  5.         dba.setPassword(db_pass);
  6.         dba.setPort(db_port);
  7.         bool ok = dba.open();
  8.         qDebug() << "db open" << ok;
  9.         if(false == ok)
  10.         {
  11.                 QString message = tr("Нет соединения с DB. Name: %1 User: %2").arg(db_name).arg(db_user);
  12.                 QMessageBox::critical(0, tr("Ошибка connect DB"), message);
  13.  
  14.                 qFatal("Не возможно подключиться к базе.");
  15.         }
  16.         else
  17.         {
  18.                 query = new QSqlQuery(execname, dba);
  19.  
  20.                 QString sql = "SELECT * FROM members WHERE id=0";
  21.                 query->exec();
  22.                 if(query && query->next())
  23.                 {
  24.                         qDebug() << query->value("id").toString();
  25.                 }
  26.         }
  27.  
Работа делает свободным!

Оффлайн archuser

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

Оффлайн Dexel

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

Версия 5.10.1 с PostgreSQL 10.1
Работа делает свободным!

 

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