QT sqlite怎么知道什么时候没有更多结果?

时间:2014-05-06 08:21:51

标签: qt sqlite

我想知道什么时候我的查询返回了最后一个结果。

我目前的代码:

if (db.isOpen()) {

    QSqlQuery query(db);

    ret = query.exec(QString("select * from history WHERE cID = '%1' order by date(time) ASC;").arg(channel));

    if (ret) {
        while (query.next()) {

            // How can i know that there are no more results to loop through here?
            addMessage(query.value(1).toString(), query.value(2).toString(), timeStr, "NO"); 
        }
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

QSqlQuery :: last()检索结果中的最后一条记录(如果可用),并将查询定位在检索到的记录上。调用last()后,您可以检索最后一条记录的索引,并使用first()和previous()在第一条记录之前定位查询:

int lastRecordIndex = 0;
if(query.last())
{
    lastRecordIndex =  query.at();
    query.first();
    query.previous(); 
}

while (query.next()) {

    if(query.at()==lastRecordIndex)
    {
        //This is the last record
    }
    addMessage(query.value(1).toString(), query.value(2).toString(), timeStr, "NO"); 
}