QT Datenbank Zugriffe

So ich steh mal wieder vor einen Problem, ich habe Daten in eine SQLite Datenbank geschrieben nur irgendwie bekomm ich sie nicht mehr raus

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "loadConnection");
    db.setHostName("localhost");
    db.setDatabaseName("database");
    //db.setPassword("time");
    //db.setUserName("time");
    bool b = db.open();
    if(!b)
    {
       QSqlError err = db.lastError();
       qDebug(err.text().toAscii());
       emit error(Constants_SIGNAL_PROCESSOR_ERROR_DB_OPEN);
       return false;
    }

    QSqlQuery selectQuery("SELECT port, time, value FROM temptable;", db);
    selectQuery.exec();
    QSqlError err = selectQuery.lastError();

    qDebug()<< "error: " << err.text().toAscii();
    int i=0;
    while(selectQuery.next())
    {
        i++;
        Signal* sig = new Signal();
        int port = selectQuery.boundValue(0).Int;
        qulonglong time = selectQuery.boundValue(1).ULongLong;
        sig->setPort(port);
        sig->setTime(time);
        sig->setSignalValue(selectQuery.boundValue(2).Int);
        emit signalSaved(sig);
    }
    qDebug() << "Rows: " << i;
    db.close();

Wenn ich mir die Inhalte als QVariant ausgeben lass sind die immer leer, auch wenn ich mir numRowsEffected ausgeben lass sagt er mir 0 aber das i ist genau so groß wieviele Elemente ich in derTabelle hab.

Also, Du musst selectQuery.value(0).toInt() schreiben anstatt selectQuery.boundValue(0).Int, da QSqlQuery::boundValue Dir eine gebundene Variable zurückgibt die Du vorher selber an ein prepared statement gebunden hast und QVariant::Int ist eine enum-Variable die man dazu benutzt um bei QVariant::convert anzugeben in welchen Typ man den Wert convertieren will.

Gut Schuß
VuuRWerK :wink:

ah danke gleich nach dem Frühstück mal ausprobieren.

Ja das war früher mal in value nur ich hab soviel rumprobiert da ist auch mal aus value ein bindValue geworden, aber jetzt läufts, das toInt wars :slight_smile:
Danke