Russian Qt Forum

Qt => Базы данных => Тема начата: INZER от Октябрь 22, 2013, 10:21



Название: Распознать причину ошибки QSqlError::ConnectionError
Отправлено: INZER от Октябрь 22, 2013, 10:21
Провожу анализ ошибок БД.

Код:
    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.


Название: Re: Распознать причину ошибки QSqlError::ConnectionError
Отправлено: KILLER-PC от Октябрь 22, 2013, 14:12
Ну этим кодом проанализировать врятли получится. Надо смотреть на сам запрос, и то как он обрабатывается.