Соединитесь с базой данных, стоящей на хосте, которая требует соединения S SH, используя Qt - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь создать приложение GUI C ++ с базой данных PostgreSQL. Он расположен на удаленном сервере, который не виден в publi c, но требует установки туннеля через S SH. Когда я хочу установить соединение в TablePlus, конфигурация выглядит следующим образом:

TablePlus

и работает отлично. Но в QtCreator у меня есть следующий код, который генерирует ошибку:

#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include "QSqlError"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");

    db.setHostName("host.with.database.com");
    db.setDatabaseName("database");
    db.setPassword("******");
    db.setUserName("userFromAboveHost");

    if(db.open())
    {
        qDebug() <<"opened" ;
        db.close();
    }
    else
    {
        qDebug() << db.lastError().text();
        exit(1);
    }

    MainWindow w;
    w.show();

    return a.exec();

}
"could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "host.with.database.com" and accepting TCP/IP connections on port 5432?
QPSQL: Unable to connect"

Чтобы сообщить вам заранее, хост принимает такие соединения, потому что соединение в TablePlus возможно без препятствий.

Мои вопросы: Что мне добавить в мой код? Возможно ли в целом установить sh это соединение, используя Qt? Или я вынужден сменить технологию?

Спасибо.

...