Вы можете использовать isOpenError
, чтобы определить, было ли успешным открытие исходного соединения с базой данных.Я согласен, что isOpen
возврат true
сбивает с толку.
Для мониторинга соединения с базой данных я неоднократно пытаюсь открыть и закрыть легкое соединение MySQL (например, каждые 3 секунды):
#include <mysql/mysql.h>
mysql_init(&connection);
MYSQL *result = mysql_real_connect(&connection,
host.isNull() ? static_cast<const char *>(0) : host.toLocal8Bit().constData(),
user.isNull() ? static_cast<const char *>(0) : user.toLocal8Bit().constData(),
pass.isNull() ? static_cast<const char *>(0) : pass.toLocal8Bit().constData(),
dbName.isNull() ? static_cast<const char *>(0) : dbName.toLocal8Bit().constData(),
0,
0,
0);
bool currentlyConnected = (result != 0);
В приведенном выше примере host
, user
, pass
и dbName
являются экземплярами QString
, содержащими информацию о соединении.Обратите внимание, что вам нужны заголовки разработки MySQL.