在 Qt 列表中存储来自数据库的查询结果的更好方法
Better way to store query results from db in Qt Lists
我有一个 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 while 循环之外,还有另一种更优化更快的方法来将结果存储在列表中,因为我认为这相当慢?
在Qt方面,我能想到的唯一优化是
querySelect.setForwardOnly(true)
顺便说一下,我认为您可以改变方法并创建一个 class 和一个列表,而不是三个单独的列表。
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()} );
}
我有一个 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 while 循环之外,还有另一种更优化更快的方法来将结果存储在列表中,因为我认为这相当慢?
在Qt方面,我能想到的唯一优化是
querySelect.setForwardOnly(true)
顺便说一下,我认为您可以改变方法并创建一个 class 和一个列表,而不是三个单独的列表。
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()} );
}