2017-12-06 1 views
1

Ich habe eine Select-Abfrage, aus der ich Ergebnisse in QT-Listen nach Abfrageausführung speichern möchte. Einige meiner Code ist:Bessere Möglichkeit, Abfrageergebnisse von db in Qt-Listen zu speichern

QSqlQuery querySelect; 

QStringList rfid; 
QList<QDateTime> datetimeIN; 
QList<QDateTime> datetimeOUT; 

... Einige andere Code + querySelect vorzubereiten .....

if(querySelect.exec()) 
    { 


      while(querySelect.next()) { 

       rfid.append(querySelect.value(0).toString()); 
       datetimeIN.append(querySelect.value(1).toDateTime()); 
       datetimeOUT.append(querySelect.value(2).toDateTime()); 

      } 

    } 
    else 
    { 
     qDebug() << querySelect.lastError(); 
    } 

ich wissen will, ist es eine andere, optimiert schneller Ansatz, um die Ergebnisse zu speichern, in den Listen, anders als mit der Query.next während des Zyklus, weil ich denke, das ist eher langsam?

+0

QVector ist besser – JLev

Antwort

1

Auf der Qt-Seite, die einzige Optimierung, die ich denken kann, ist

querySelect.setForwardOnly(true) 

By the way, ich glaube, Sie Ansatz ändern und eine einzige Klasse und eine Liste für sich erstellen, sondern drei dann getrennt Listen.

struct Data 
{ 
    QString rfid; 
    QDateTime dtIn; 
    QDateTime dtOut; 
}; 

speichern dann die Ergebnisse auf diese Weise:

QList<Data> list; 
while(querySelect.next()) {  
    list.append({querySelect.value(0).toString(), 
        querySelect.value(1).toDateTime(), 
        querySelect.value(2).toDateTime()}); 
} 
+0

Thanks @ p-a-o-l-o. Der Vorstoß brachte nur den Trick –

Verwandte Themen