在Qt列表中存储db的查询结果的更好方法

时间:2017-12-06 08:45:52

标签: c++ qt5 qlist

我有一个select查询,我希望在查询执行后将结果存储在QT列表中。我的一些代码是:

QSqlQuery querySelect;

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

...其他一些代码+ querySelect prepare .....

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();
}

我想知道是否有另一种更优化的更快速的方法来将结果存储在列表中,而不是使用query.next循环,因为我觉得这很慢?

1 个答案:

答案 0 :(得分:2)

在Qt方面,我能想到的唯一优化是

querySelect.setForwardOnly(true)

顺便说一句,我认为你可以改变方法,为它创建一个单独的类和一个列表,而不是三个单独的列表。

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

然后以这种方式存储结果:

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