Михаиллл
Dec. 9, 2018, 7:25 p.m.

Как в QT подключить PostgreSQL

Qt, PostgreSQL

Здравствуйте.
Пытаюсь подключить PostgreSQL 9,6. Разрядность скорей всего 32.
Компилятор MinGW32.
В pro файле дописал
INCLUDEPATH += C:/Program Files (x86)/PostgreSQL/9.6/include
LIBS+= C:/Program Files (x86)/PostgreSQL/9.6/lib/libpq.dll
В проекте срр написал
QSqlDatabase SearchDB = QSqlDatabase::addDatabase("QPSQL");
При работе выдает ошибку:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
Скажите пожалуйста как правильно подключить PostgreSQL 9,6?

2

Do you like it? Share on social networks!

8
Evgenii Legotckoi
  • Dec. 9, 2018, 9:14 p.m.

Непонятно, вы драйвер скачали или собирали?

Сдаётся мне, что возможно более правильный вариант собрать своим компилятором вначале его, а потом уже подключать.

    Михаиллл
    • Dec. 10, 2018, 5:59 p.m.

    оказывается новый драйвер не нужен, так работает:
    https://forum.qt.io/topic/81148/cannot-install-postgresql-driver/8

      Михаиллл
      • Dec. 10, 2018, 6:29 p.m.

      С драйвером проблема решена.
      Но дальше пытаюсь подключиться к базе.
      На этом этапе

      1. QSqlDatabase SearchDB = QSqlDatabase::addDatabase("QPSQL");
      2. SearchDB.setDatabaseName("CVReader");
      3. SearchDB.setUserName("postgres");
      4. SearchDB.setHostName("localhost");
      5. SearchDB.setPassword("1qaz");
      6. if (!SearchDB.open()) {qDebug()<<"bd is open";} else {qDebug()<<"bd not open";}

      дебаг говорит что база открыта.
      Если дальше делать подключение к таблице

      1. QSqlTableModel *SearchTableModel = new QSqlTableModel(this);
      2. SearchTableModel ->setTable("ResumePostgresSQL");
      3. SearchTableModel->setHeaderData(1,Qt::Horizontal, "Название столбца");
      4. SearchTableModel->select();

      то выдает ошибку:
      QSqlDatabasePrivate::database: unable to open database: "could not connect to server: Connection refused (0x0000274D/10061)\n\tIs the server running on host \"localhost\" (::1) and accepting\n\tTCP/IP connections on port 5432?\ncould not connect to server: Connection refused (0x0000274D/10061)\n\tIs the server running on host \"localhost\" (127.0.0.1) and accepting\n\tTCP/IP connections on port 5432?\nQPSQL: Unable to connect"
      Скажите пожалуйста, как правильно подключить эту субд?

        Михаиллл
        • Dec. 10, 2018, 6:50 p.m.
        • (edited)

        извините ошибся, на SearchDB.open() база не открывается.
        может быть setHostName нужен другой?

          Evgenii Legotckoi
          • Dec. 10, 2018, 6:51 p.m.

          Насколько помню, там нужно ещё порты укзаывать, если подключение идёт к сетевой базе данных и вместо localhost нужно указать ip адрес, в вашем случае "127.0.0.1"

            Evgenii Legotckoi
            • Dec. 10, 2018, 6:56 p.m.

            так вроде бы

            1. SearchDB.setHostName( "192.168.0.1" );
            2. SearchDB.setPort( 5432 );
              Михаиллл
              • Dec. 10, 2018, 7:03 p.m.

              Спасибо.
              Дописал так и база открылась

              1. SearchDB.setHostName("127.0.0.1");
              2. SearchDB.setPort(5434);

              Но QSqlTableModel не отображает запрашиваемую таблицу.

                Evgenii Legotckoi
                • Dec. 10, 2018, 7:10 p.m.

                Это уже другой, отдельный вопрос )))

                Скорее всего неправильно объявлено что-то в таблице, либо она не создана, либо неправильно читается. Смотрите вывод ошибок

                  Comments

                  Only authorized users can post comments.
                  Please, Log in or Sign up
                  • Last comments
                  • AK
                    April 1, 2025, 11:41 a.m.
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    March 9, 2025, 9:02 p.m.
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    March 9, 2025, 4:14 p.m.
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                  • ИМ
                    Nov. 22, 2024, 9:51 p.m.
                    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                  • Evgenii Legotckoi
                    Oct. 31, 2024, 11:37 p.m.
                    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup