J'essaie de me connecter à la base de données QPSQL via un câble croisé ou sans fil. Quand j'entre les détails corrects tout va bien mais si j'entre les détails incorrects le programme se bloque au lieu de me donner le message de qDebug pourquoi?Le programme Qt se bloque en cas de connexion infructueuse à QPSQL
const char* driverName = "QPSQL";
QSQLDbHelper* qSQLDbHelper = new QSQLDbHelper(driverName);
postgres_db = qSQLDbHelper->connect(host,database,username,password,port);
if(postgres_db->open())
{
qDebug() <<"Opened Postgres Database"<< postgres_db->open();
}
else
{
qDebug() << "Something went Wrong:" << postgres_db->lastError().text();
}
qSQLDbHelper->disConnect();
delete qSQLDbHelper;
void QSQLDbHelper::disConnect()
{
qDebug() << "Disconnected From Postgres Database!";
postgres_db->close();
}
Votre réponse est correcte, mais je suis légèrement confus ce que je retournerais sur une connexion infructueuse afin qu'il ne tombe pas en panne. – Tony
si vous le pouvez, éditez la fonction 'connect' pour retourner' db-> open() 'et créez une nouvelle fonction pour accéder à la propriété' QSQLDbHelper-> db'. Vous pouvez ensuite utiliser [lastError()] (http://doc.qt.io/qt-5/qsqldatabase.html#lastError) dessus si 'connect' renvoie false. –
J'ai mis à jour ma réponse avec 2 idées sur comment vous pouvez contourner cela. Avec cette aide en l'état - vous ne pouvez pas vérifier les erreurs sur connecter. Vous devrez modifier cette classe. –