Провожу анализ ошибок БД.
switch (db.lastError().type())
{
case QSqlError::NoError:
break;
case QSqlError::ConnectionError:
changeDataBase();
break;
case QSqlError::StatementError:
QMessageBox::critical(this,QString::fromLocal8Bit("Ошибка БД"), QString::fromLocal8Bit("Ошибка в запросе"),QMessageBox::Ok,QMessageBox::NoButton);
break;
case QSqlError::TransactionError:
QMessageBox::critical(this,QString::fromLocal8Bit("Ошибка БД"), QString::fromLocal8Bit("Ошибка транзакции"),QMessageBox::Ok,QMessageBox::NoButton);
break;
case QSqlError::UnknownError:
QMessageBox::critical(this,QString::fromLocal8Bit("Ошибка БД"), QString::fromLocal8Bit("Ошибка Базы Данных."),QMessageBox::Ok,QMessageBox::NoButton);
break;
}
Необходимо проанализировать ошибку QSqlError::ConnectionError. Из-за чего нет соединения (нет доступа к серверу, неправильный логин - пароль и т.д.). QSqlError::number () во всех случаях возвращает -1
int QSqlError::number () const
Returns the database-specific error number, or -1 if it cannot be determined.
Функция databaseText () выдает описание ошибки, но оно не юсер-френдли
QString QSqlError::databaseText () const
Returns the text of the error as reported by the database. This may contain database-specific descriptions; it may be empty.