Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переподключение к БД
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
SibBear
Добрый день. Моя программа работает с удаленной базой MySQL. В main.cpp создается подключение к БД:

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("XXX.XXX.XXX.XXX");
    db.setDatabaseName("mydb");
    db.setUserName("dbuser");
    db.setPassword("password");
    bool ok=db.open();
........


Далее в MainWindow и других классах производятся действия с БД.
Вопрос такой: как организовать попытки автоматического переподключения к БД в случаях, когда произошел сбой на сервере?

Спасибо.
Алексей1153
SibBear, про сбой не знаю (сбой - это серьёзно :lol: ), а при разрыве связи можно посмотреть

https://dev.mysql.com/doc/refman/5.7/en/auto-reconnect.html

метод QSqlDatabase::setConnectOptions , параметр MYSQL_OPT_RECONNECT

ну и проверяем, что база открыта isOpen

Переподключаться можно точно так же, как подключался

db.close();
db.open();


процесс подключения может быть заметный по времени (скажем так, не мгновенный), так что учитывай это. Я у себя выделил отдельный поток, который заведует открытием базы, а также скидыванием из очереди потока новых сообщений. Ну, и в случае многопоточности также не забывай про синхронизацию
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.