c++ - 在 Qt 列表中存储来自数据库的查询结果的更好方法

标签 c++ qt5 qlist

我有一个选择查询,我想在查询执行后将结果存储在 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 while 循环,我想知道是否有另一种更优化更快的方法来将结果存储在列表中,因为我认为这相当慢?

最佳答案

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

关于c++ - 在 Qt 列表中存储来自数据库的查询结果的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47670114/

相关文章:

c++ - QWidget继承自自定义QWidget

c++ - QList<float*> 类型的 NULL 返回值

c++ - 为成就系统设计MySQL表

c++ - 如何检查变量是否仍然有效或在其上使用了 std::move?

qt - QLineEdit::textEdited() 等效于 QTextEdit?

c++ - Qt 5.8 中的 Qt 5.5 项目构建错误

qt - qlist - 避免内存泄漏

c# - 使用 Win MMDevice API 使特定音频输入静音

c++ - 为什么在创建入栈函数时使用指向栈的指针?

ubuntu - 如何更改Qt按钮中的焦点颜色(突出显示颜色)?