SErrorPackage PostgresErrorHandler::handle(const QSqlError &error) { // new row for relation "doms_persons" violates check constraint doms_persons_email_check // insert or update on table "doms_pacients" violates foreign key constraint "doms_pacients_iddocument_fkey" QString text = error.databaseText().toLower(); if ( text.contains("duplicate key") ) { SErrorPackage package(error.number(), QObject::tr("Seems like pacients already exists")); return package; } else if ( text.contains("syntax error") ) { SErrorPackage package(error.number(), QObject::tr("You're trying to do an invalid action")); return package; } SErrorPackage package(error.number(), QObject::tr("PostgresErrorHandler %1").arg(error.databaseText())); // TODO: Analizar los textos! return package; }
/*! \internal Virtual function which is called when an error has occurred The default implementation displays a warning message to the user with information about the error. */ void QDataManager::handleError( QWidget* parent, const QSqlError& e ) { #ifndef QT_NO_MESSAGEBOX if (e.driverText().isEmpty() && e.databaseText().isEmpty()) { QMessageBox::warning ( parent, "Warning", "An error occurred while accessing the database"); } else { QMessageBox::warning ( parent, "Warning", e.driverText() + "\n" + e.databaseText(), 0, 0 ); } #endif // QT_NO_MESSAGEBOX }
void Tf::writeQueryLog(const QString &query, bool success, const QSqlError &error) { QString q = query; if (!success) { QString err = (!error.databaseText().isEmpty()) ? error.databaseText() : error.text().trimmed(); if (!err.isEmpty()) { err = QLatin1Char('[') + err + QLatin1String("] "); } q = QLatin1String("(Query failed) ") + err + query; } Tf::traceQueryLog("%s", qPrintable(q)); }
void plumaje::insertColor () { if (!nombrePluma->text().isEmpty() && !descripcionPluma->text().isEmpty()) { if (modificando) { QString consulta = "UPDATE plumaje SET nombre = \"" + nombrePluma->text() + "\", \ descripcion = \"" + descripcionPluma->text() + "\" \ WHERE plumajeID = " + tablaPlumaje->currentRecord()->value(0).toString(); qWarning (consulta); QSqlQuery queryUpdate (consulta, QSqlDatabase::database("palomar" )); QSqlError error = queryUpdate.lastError(); if (error.type() != QSqlError::None) KMessageBox::error (this, i18n("Error actualizando el color de pluma. El error devuelto por la base de datos es:\n") + error.databaseText(), i18n ("Error actualizando color de pluma")); else { tablaPlumaje->refresh(); InsertButton->setText(i18n("Insertar")); modificando = FALSE; descripcionPluma->clear(); nombrePluma->clear(); } } else { QString consulta = "INSERT INTO plumaje (nombre, descripcion) VALUES ('"; consulta += nombrePluma->text() + "', '" + descripcionPluma->text() + "');"; qWarning (consulta); QSqlQuery queryInsert (consulta, QSqlDatabase::database("palomar" )); QSqlError error = queryInsert.lastError(); if (error.type() != QSqlError::None) KMessageBox::error (this, i18n("Error insertantdo el color de pluma.El error devuelto por la base de datos es:\n") + error.databaseText(), i18n ("Error añadiendo el color de pluma")); else { tablaPlumaje->refresh(); descripcionPluma->clear(); nombrePluma->clear(); } } } else KMessageBox::error (this, i18n("Debe rellenar el nombre y la descripción."), i18n ("Error añadiendo tipo de suelta")); }
int Loadable::upsertPkgItem(int &pkgitemid, const int pkgheadid, const int itemid, QString &errMsg) { if (pkgheadid < 0) return 0; QSqlQuery select; QSqlQuery upsert; if (pkgitemid >= 0) upsert.prepare("UPDATE pkgitem SET pkgitem_descrip=:descrip " "WHERE (pkgitem_id=:id);"); else { upsert.prepare("SELECT NEXTVAL('pkgitem_pkgitem_id_seq');"); upsert.exec(); if (upsert.first()) pkgitemid = upsert.value(0).toInt(); else if (upsert.lastError().type() != QSqlError::NoError) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_name).arg(err.driverText()).arg(err.databaseText()); return -20; } upsert.prepare("INSERT INTO pkgitem (" " pkgitem_id, pkgitem_pkghead_id, pkgitem_type," " pkgitem_item_id, pkgitem_name, pkgitem_descrip" ") VALUES (" " :id, :headid, :type," " :itemid, :name, :descrip);"); } upsert.bindValue(":id", pkgitemid); upsert.bindValue(":headid", pkgheadid); upsert.bindValue(":type", _pkgitemtype); upsert.bindValue(":itemid", itemid); upsert.bindValue(":name", _name); upsert.bindValue(":descrip", _comment); if (!upsert.exec()) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_name).arg(err.driverText()).arg(err.databaseText()); return -21; } return pkgitemid; }
QString toQSqlConnectionSub::ErrorString(const QSqlError &err, const QString &sql) { QString ret; if (err.databaseText().isEmpty()) { if (err.driverText().isEmpty()) ret = QString::fromLatin1("Unknown error"); else ret = err.driverText(); } else ret = err.databaseText(); if (!sql.isEmpty()) ret += QString::fromLatin1("\n\n") + sql; return ret; }
void Database::login() throw (TimesheetProcessorException ) { MySqlStorage::Parameters parameters; try { parameters = MySqlStorage::parseParameterEnvironmentVariable(); } catch( ParseError& e ) { throw TimesheetProcessorException( e.what() ); } m_storage.configure( parameters ); bool ok = m_storage.database().open(); if ( !ok ) { QSqlError error = m_storage.database().lastError(); QString msg = QObject::tr( "Cannot connect to database %1 on host %2, database said " "\"%3\", driver said \"%4\"" ) .arg( parameters.database ) .arg( parameters.host ) .arg( error.driverText() ) .arg( error.databaseText() ); throw TimesheetProcessorException( msg ); } // check if the driver has transaction support if( ! m_storage.database().driver()->hasFeature( QSqlDriver::Transactions ) ) { QString msg = QObject::tr( "The database driver in use does not support transactions. Transactions are required." ); throw TimesheetProcessorException( msg ); } }
bool Application::notify(QObject * receiver, QEvent * e) { try { return QApplication::notify(receiver, e); } catch (Exception & e) { qCritical() << e.title() << ':' << e.description(); QMessageBox::critical(nullptr, e.title(), e.description()); } catch (QSqlQuery & q) { QString s; QTextStream str(&s); QSqlError e = q.lastError(); str << "Query: " << q.lastQuery() << '\n'; str << "Driver text: " << e.driverText() << '\n'; str << "Database text: " << e.databaseText() << '\n'; str << "Native error code: " << e.nativeErrorCode(); qCritical() << "Database error:" << s; QMessageBox::critical(nullptr, "Database error", s); } return false; }
std::vector< Profile > DatabaseFacade::getUsers() { std::vector<Profile> profiles; if(!connected) { qDebug() << "Not connected to database"; return profiles; } QSqlQuery query; query.exec("SELECT * FROM Gamers"); QSqlError err = query.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); QPixmap picture; picture.loadFromData(query.value(2).toByteArray()); profiles.emplace_back(id, name, picture); } query.clear(); return profiles; }
std::vector< Score > DatabaseFacade::getHightScores( const QString& gameName_, int limit_ ) { std::vector< Score > scores; if(!connected) { qDebug() << "Not connected to database"; return scores; } QSqlQuery query; query.exec(queryGetHighScores.arg(gameName_)); QSqlError err = query.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); while (query.next()) { QString name = query.value(0).toString(); QPixmap picture; picture.loadFromData(query.value(1).toByteArray()); int score = query.value(2).toInt(); scores.emplace_back(name, picture, score); } query.clear(); return scores; }
/*! * \brief SqlQuery::exec Execute a existing query with capability to throw SqlException * if necessary. * \return true if successfully executed, false otherwise. */ bool SqlQuery::exec() throw(SqlException) { bool b = m_sqlQuery.exec(); QSqlError sqlError = m_sqlQuery.lastError(); switch(sqlError.type ()) { case QSqlError::NoError: return b; case QSqlError::ConnectionError: case QSqlError::StatementError: if(sqlError.databaseText() == "MySQL server has gone away"){ throw SqlConnectionException(sqlError); }else{ throw SqlStatementException(sqlError); } case QSqlError::TransactionError: throw SqlTransactionException(sqlError); case QSqlError::UnknownError: throw SqlUnknownException(sqlError); default: throw SqlException(sqlError); } }
void SQLiteDriver::setLastError(const QSqlError& e) { #if defined(SQLITEDRIVER_DEBUG) if (e.isValid()) qDebug() << "SQLite error:" << e.driverText() << e.databaseText(); #endif QSqlDriver::setLastError(e); }
void checkMySQLError(QSqlQuery& q) { QSqlError e = q.lastError(); if(!e.isValid()) return;//no error qDebug()<<"got MySQL-Error"<<e.number()<<e.text()<<"/"<<e.databaseText()<<"/"<<e.driverText(); qDebug()<<"on query"<<q.lastQuery(); qDebug()<<"Terminating Application"; QCoreApplication::quit(); }
QT_BEGIN_NAMESPACE #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug dbg, const QSqlError &s) { dbg.nospace() << "QSqlError(" << s.number() << ", " << s.driverText() << ", " << s.databaseText() << ')'; return dbg.space(); }
QT_BEGIN_NAMESPACE #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug dbg, const QSqlError &s) { QDebugStateSaver saver(dbg); dbg.nospace(); dbg << "QSqlError(" << s.nativeErrorCode() << ", " << s.driverText() << ", " << s.databaseText() << ')'; return dbg; }
/*! \internal Virtual function which is called when an error has occurred The default implementation displays a warning message to the user with information about the error. */ void Q3DataManager::handleError(QWidget* parent, const QSqlError& e) { #ifndef QT_NO_MESSAGEBOX if (e.driverText().isEmpty() && e.databaseText().isEmpty()) { QMessageBox::warning (parent, QLatin1String("Warning"), QLatin1String("An error occurred while accessing the database")); } else { QMessageBox::warning (parent, QLatin1String("Warning"), e.driverText() + QLatin1Char('\n') + e.databaseText(), 0, 0); } #endif // QT_NO_MESSAGEBOX }
void plumaje::eliminarColor() { QString consulta = "DELETE FROM plumaje WHERE plumajeID = " + tablaPlumaje->currentRecord()->value(0).toString(); QSqlQuery queryDelete (consulta, QSqlDatabase::database("palomar" )); QSqlError error = queryDelete.lastError(); if (error.type() != QSqlError::None) KMessageBox::error (this, i18n("Error eliminando el color de pluma. El error devuelto por la base de datos es:\n") + error.databaseText(), i18n ("Error eliminando el color de pluma")); tablaPlumaje->refresh(); }
void ojo::eliminarTipo() { QString consulta = "DELETE FROM ojo WHERE ojoID = " + tablaOjos->currentRecord()->value(0).toString(); QSqlQuery queryDelete (consulta, QSqlDatabase::database("palomar" )); QSqlError error = queryDelete.lastError(); if (error.type() != QSqlError::None) KMessageBox::error (this, i18n("Error eliminando el tipo de ojo. El error devuelto por la base de datos es:\n") + error.databaseText(), i18n ("Error eliminando el tipo de ojo")); tablaOjos->refresh(); }
void DatabaseFacade::addUserStat( int userId, const QString& gameName_, int score_ ) { if(!connected) { qDebug() << "Not connected to database"; return; } QSqlQuery query; QSqlQuery query2; qDebug() << "Executing query : \n\t" << queryGetGamerHighScore.arg(gameName_).arg(userId); query.exec(queryGetGamerHighScore.arg(gameName_).arg(userId)); QSqlError err = query.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); if(query.next()) { if(query.value(1).toInt() < score_) { qDebug() << "Executing query : \n\t" << queryUpdateHighScore.arg(score_).arg(query.value(0).toString()).arg(userId); query2.exec(queryUpdateHighScore.arg(score_).arg(query.value(0).toString()).arg(userId)); err = query2.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); } } else { qDebug() << "Executing query : \n\t" << queryInsertHighScore.arg(userId).arg(gameName_).arg(score_); query2.exec(queryInsertHighScore.arg(userId).arg(gameName_).arg(score_)); err = query2.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); } }
void SvSerialEditor::accept() { params.name = ui->cbPortName->currentData().toString(); params.description = ui->cbPortName->currentText(); params.baudrate = ui->cbBaudrate->currentData().toUInt(); params.databits = QSerialPort::DataBits(ui->cbDataBits->currentData().toInt()); params.flowcontrol = QSerialPort::FlowControl(ui->cbFlowControl->currentData().toInt()); params.parity = QSerialPort::Parity(ui->cbParity->currentData().toInt()); params.stopbits = QSerialPort::StopBits(ui->cbStopBits->currentData().toInt()); try { QSqlError err = check_params_exists(params.dev_type); if(QSqlError::NoError != err.type()) _exception.raise(err.databaseText()); err = SQLITE->execSQL(QString(SQL_UPDATE_DEVICES_SERIAL_PARAMS_WHERE) .arg(params.name) .arg(params.baudrate) .arg(params.parity) .arg(params.stopbits) .arg(params.databits) .arg(params.flowcontrol) .arg(params.description) .arg(params.dev_type)); if(QSqlError::NoError != err.type()) _exception.raise(err.databaseText()); QDialog::accept(); } catch(SvException e) { _last_error = e.err; // qDebug() << _last_error; QDialog::reject(); } }
QVariantMap ScriptQuery::lastError() { QVariantMap m; QSqlError err = _query.lastError(); m.insert("databaseText", err.databaseText()); m.insert("driverText", err.driverText()); m.insert("text", err.text()); m.insert("number", err.number()); m.insert("type", err.type()); m.insert("isValid", QVariant(err.isValid(), 0)); return m; }
QString MythDB::DBErrorMessage(const QSqlError& err) { if (!err.type()) return "No error type from QSqlError? Strange..."; return QString("Driver error was [%1/%2]:\n" "%3\n" "Database error was:\n" "%4\n") .arg(err.type()) .arg(err.number()) .arg(err.driverText()) .arg(err.databaseText()); }
bool importDialog::setUpDB(QString host, QString user, QString pass) { QSqlDatabase writerDb(QSqlDatabase::addDatabase("QMYSQL","Global")); writerDb.setHostName(host); writerDb.setUserName(user); writerDb.setPassword(pass); if(!writerDb.open()) { QSqlError err = writerDb.lastError (); QMessageBox::critical(this,tr("The database reported an error:"),err.databaseText()); return false; } return writerDb.isValid(); }
void SqlDB::throwDatabaseException(const char* file, int line, const QSqlError& err) { string s = IceUtilInternal::toLower(err.databaseText().toUtf8().data()); if(s.find("deadlock") != string::npos || s.find("database is locked") != string::npos || s.find("could not serialize") != string::npos) { throw DeadlockException(file, line, err); } else { throw DatabaseException(file, line, err); } }
QVariantMap XSqlQueryProto::lastError() { QVariantMap m; XSqlQuery *item = qscriptvalue_cast<XSqlQuery*>(thisObject()); if (item) { QSqlError err = item->lastError(); m.insert("databaseText", err.databaseText()); m.insert("driverText", err.driverText()); m.insert("text", err.text()); m.insert("number", err.number()); m.insert("type", err.type()); m.insert("isValid", QVariant(err.isValid())); } return m; }
void DatabaseFacade::openConnexion() { db.setHostName( DATABASE_IP ); db.setDatabaseName( DATABASE_NAME ); db.setUserName( DATABASE_USER ); db.setPassword( DATABASE_PASS ); connected = db.open(); if(!connected) { qDebug() << "Connexion to database failed"; QSqlError err = db.lastError(); if(err.isValid()) qDebug() << err.databaseText() << "\n" << err.driverText() << "\n" << err.nativeErrorCode(); } }
int main(int argc, char* argv[]) { #ifdef Q_WS_WIN WSADATA wsaData; if(WSAStartup(MAKEWORD(1, 1), &wsaData)) { qDebug("Error starting up Windows Socket system... libpq will not work."); } #endif QApplication app(argc, argv); bool haveDB = FALSE; QSqlDatabase *db = QSqlDatabase::addDatabase("QPSQL7"); if(db) { db->setDatabaseName("mfg"); db->setUserName("cryan"); db->setPassword("password"); db->setHostName("192.168.2.100"); if(db->open()) { haveDB = TRUE; } else { QSqlError err = db->lastError(); qDebug("Driver: %s", (const char*)err.driverText()); qDebug("Database: %s", (const char*)err.databaseText()); qDebug("Could not make connection to database: sql query will be disabled"); } } else { qDebug("Could not load the database driver: sql query will be disabled"); } GraphWindow * gw = new GraphWindow(); gw->init(haveDB); app.setMainWidget(gw); gw->show(); int ret = app.exec(); #ifdef Q_WS_WIN WSACleanup(); #endif return ret; }
int main(int argc, char* argv[]) { #ifdef XQ_WS_WIN WSADATA wsaData; if(WSAStartup(MAKEWORD(1, 1), &wsaData)) { qDebug("Error starting up Windows Socket system... libpq will not work."); } #endif QApplication app(argc, argv); bool haveDB = FALSE; QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); if(db.isValid()) { db.setDatabaseName("test"); db.setUserName("cryan"); db.setPassword("password"); db.setHostName("localhost"); if(db.open()) { haveDB = TRUE; } else { QSqlError err = db.lastError(); qDebug("Driver: %s", err.driverText().toLatin1().data()); qDebug("Database: %s", err.databaseText().toLatin1().data()); qDebug("Could not make connection to database: sql query will be disabled"); } } else { qDebug("Could not load the database driver: sql query will be disabled"); } GraphWindow gw; gw.init(haveDB); gw.show(); int ret = app.exec(); #ifdef XQ_WS_WIN WSACleanup(); #endif return ret; }
ImportWindow::ImportWindow(QWidget* parent, Qt::WindowFlags fl) : QMainWindow(parent, fl) { setupUi(this); (void)statusBar(); // signals and slots connections connect(helpIndexAction, SIGNAL(activated()), this, SLOT(helpIndex())); connect(helpContentsAction, SIGNAL(activated()), this, SLOT(helpContents())); connect(helpAboutAction, SIGNAL(activated()), this, SLOT(helpAbout())); connect(fileExitAction, SIGNAL(activated()), this, SLOT(fileExit())); connect(fileOpenAction, SIGNAL(activated()), this, SLOT(sAdd())); connect(_add, SIGNAL(clicked()), this, SLOT(sAdd())); connect(_import, SIGNAL(clicked()), this, SLOT(sImport())); connect(_remove, SIGNAL(clicked()), this, SLOT(sRemove())); _reports->clear(); QSqlQuery qpop; QSqlError err; if(!qpop.exec(getSqlFromTag("fmt19", QSqlDatabase::database().driverName()))) { err = qpop.lastError(); _log->append(tr("<font color=red>The following error was encountered " "retrieving available schemas:\n" "\t%1\n\t%2\n</font>") .arg(err.driverText()) .arg(err.databaseText())); return; } else while (qpop.next()) _schema->addItem(qpop.value(0).toString(), qpop.value(0)); _dbTimerId = startTimer(60000); }
int LoadReport::writeToDB(const QByteArray &pdata, const QString pkgname, QString &errMsg) { int errLine = 0; int errCol = 0; QDomDocument doc; if (! doc.setContent(pdata, &errMsg, &errLine, &errCol)) { errMsg = (TR("<font color=red>Error parsing file %1: %2 on " "line %3 column %4</font>") .arg(_filename).arg(errMsg).arg(errLine).arg(errCol)); return -1; } QDomElement root = doc.documentElement(); if(root.tagName() != "report") { errMsg = TR("<font color=red>XML Document %1 does not have root" " node of report</font>") .arg(_filename); return -2; } for(QDomNode n = root.firstChild(); !n.isNull(); n = n.nextSibling()) { if(n.nodeName() == "name") _name = n.firstChild().nodeValue(); else if(n.nodeName() == "description") _comment = n.firstChild().nodeValue(); } QString report_src = doc.toString(); if(_filename.isEmpty()) { errMsg = TR("<font color=orange>The document %1 does not have" " a report name defined</font>") .arg(_filename); return -3; } /* the following block avoids ERROR: duplicate key violates unique constraint "report_name_grade_idx" */ if (! pkgname.isEmpty()) { // if there's a version of the report that's not part of this pkg XSqlQuery select; select.prepare("SELECT report_id " "FROM report r JOIN pg_class c ON (r.tableoid=c.oid)" " JOIN pg_namespace n ON (relnamespace=n.oid) " "WHERE ((report_name=:name)" " AND (report_grade=:grade)" " AND (nspname<>:pkgname));"); select.bindValue(":name", _name); select.bindValue(":grade", _grade); select.bindValue(":pkgname", pkgname); select.exec(); if(select.first()) { // then find the next open higher grade XSqlQuery next; next.prepare("SELECT MIN(sequence_value) AS next " "FROM sequence " "WHERE ((sequence_value NOT IN (" " SELECT report_grade" " FROM report" " WHERE (report_name=:name)))" " AND (sequence_value>=:grade));"); next.bindValue(":name", _name); next.bindValue(":grade", _grade); next.exec(); if (next.first()) _grade = next.value(0).toInt(); else if (next.lastError().type() != QSqlError::NoError) { QSqlError err = next.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -8; } } else if (select.lastError().type() != QSqlError::NoError) { QSqlError err = select.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -9; } } _minMql = new MetaSQLQuery("SELECT MIN(report_grade) AS min " "FROM report " "WHERE (report_name=<? value('name') ?>);"); _maxMql = new MetaSQLQuery("SELECT MAX(report_grade) AS max " "FROM report " "WHERE (report_name=<? value('name') ?>);"); _selectMql = new MetaSQLQuery("SELECT report_id, -1, -1" " FROM report " " WHERE ((report_name=<? value('name') ?>) " " AND (report_grade=<? value('grade') ?>) );"); _updateMql = new MetaSQLQuery("UPDATE <? literal('tablename') ?> " " SET report_descrip=<? value('notes') ?>, " " report_source=E<? value('source') ?> " " WHERE (report_id=<? value('id') ?>) " "RETURNING report_id AS id;"); _insertMql = new MetaSQLQuery("INSERT INTO <? literal('tablename') ?> (" " report_id, report_name," " report_grade, report_source, report_descrip" ") VALUES (" " DEFAULT, <? value('name') ?>," " <? value('grade') ?>, E<? value('source') ?>," " <? value('notes') ?>) " "RETURNING report_id AS id;"); ParameterList params; params.append("tablename", "report"); return Loadable::writeToDB(pdata, pkgname, errMsg, params); }