crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Переподключение к БД
SibBear
  опции профиля:
сообщение 14.12.2015, 8:47
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 26.7.2015
Пользователь №: 4421

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день. Моя программа работает с удаленной базой 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
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

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

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

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

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

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


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

Сообщение отредактировал Алексей1153 - 15.12.2015, 8:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.10.2019, 20:40