예제 #1
0
dbManager::dbManager()
{
    qDebug() << "Hola! Soy el contructor de dbManager()!";
    //Seteo el directorio de trabajo al home del usuario (en windows, C:\users\<usuario>
    QDir::setCurrent(QDir::homePath());
    //Creo la coneccion a la base de datos, con el driver de SQLITE3.
    db = QSqlDatabase::addDatabase("QSQLITE","managedDbConnection");
    //Seteo el nombre de la base de datos. (Ya que estamos en SQLITE sera el nombre del archivo)
    db.setDatabaseName("my.db.sqlite");
    //Abrimos la db (aha!)
    db.open();

    /**El archivo de la db se crea en el paso anterior, pero aun debemos crear la tabla.*/
    QSqlQuery query(db);
    QStringList tableList(db.tables(QSql::Tables));
    if (tableList.size() == 0)
    {
        query.exec("CREATE TABLE perfiles (id integer primary key autoincrement, nombre char, temp integer, days integer, hours integer, mins integer)");
    }

}
예제 #2
0
bool DatabaseDialog::databaseDoNext()
{
    m_dbConnection = QSqlDatabase::addDatabase(m_driver->currentText());

    if (m_dbConnection.isValid()) {
        m_dbConnection.setDatabaseName(m_databaseName->text());
        m_dbConnection.setHostName(m_host->text());

        if (!m_username->text().isEmpty())
            m_dbConnection.setUserName(m_username->text());

        if (!m_password->text().isEmpty())
            m_dbConnection.setPassword(m_password->text());

        if (!m_port->text().isEmpty()) {
            bool ok = false;
            int port = m_port->text().toInt(&ok);
            if (!ok) {
                KMessageBox::error(this, i18n("The port must be a number"));
                return false;
            }
            m_dbConnection.setPort(port);
        }

        m_databaseStatus->setText(i18n("Connecting to database..."));
        if (m_dbConnection.open()) {
            m_databaseStatus->setText(i18n("Connected. Retrieving table information..."));
            QStringList tableList(m_dbConnection.tables());

            if (tableList.isEmpty()) {
                KMessageBox::error(this, i18n("This database contains no tables"));
                m_databaseStatus->setText(" ");
                return false;
            }

            m_tableView->clear();

            for (int i = 0; i < tableList.size(); ++i) {
                QListWidgetItem * item = new QListWidgetItem(tableList[i]);
                item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
                item->setCheckState(Qt::Unchecked);
                m_tableView->addItem(item);
            }

            m_tableView->setEnabled(true);
            m_databaseStatus->setText(" ");
        } else {
            QSqlError error = m_dbConnection.lastError();
            QString errorMsg;
            QString err1 = error.driverText();
            QString err2 = error.databaseText();
            if (!err1.isEmpty()) {
                errorMsg.append(error.driverText());
                errorMsg.append('\n');
            }
            if (!err2.isEmpty() && err1 != err2) {
                errorMsg.append(error.databaseText());
                errorMsg.append('\n');
            }

            KMessageBox::error(this, errorMsg);
            m_databaseStatus->setText(" ");
            return false;
        }
    } else {
        KMessageBox::error(this, i18n("Driver could not be loaded"));
        m_databaseStatus->setText(" ");
        return false;
    }
    setValid(m_table, true);

    return true;
}