Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Переподключение к БД

Автор: SibBear 14.12.2015, 8:47

Добрый день. Моя программа работает с удаленной базой 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 15.12.2015, 8:01

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

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

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

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

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

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


процесс подключения может быть заметный по времени (скажем так, не мгновенный), так что учитывай это. Я у себя выделил отдельный поток, который заведует открытием базы, а также скидыванием из очереди потока новых сообщений. Ну, и в случае многопоточности также не забывай про синхронизацию

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)