列号.QMYSQLResult::d ata:列超出范围

Columns number. QMYSQLResult::data: column out of range

本文关键字:范围 ata QMYSQLResult 列号      更新时间:2023-10-16

有数据库。具有未知列计数的查询。需要将所有答案放在QList中

database = QSqlDatabase::addDatabase("QMYSQL");
...
QString sql = "Select * from test";
QSqlQuery query = QSqlQuery(database);
query.exec(sql);
QList<QStringList> retList;

在值上使用 .isValid()。

while (query.next()) {
int count = 0;
bool flagValues = true;
QStringList row;
while(flagValues)
{
    QVariant value = query.value(count);
    if(value.isValid() && !(count == memCount)   )
    {
        count++;
        row.append(value.toString());
    }
    else
    {
        flagValues = false;
    }
}
retList.append(row);

一切都很好,但我每行都有一条消息(不是错误)。

  QMYSQLResult::data: column 3 out of range

我不想使用其他查询(如information_schema)来了解列号。

使用 query.record().count() 获取列数。因此:

database = QSqlDatabase::addDatabase("QMYSQL");
...
QString sql = "Select * from test";
QSqlQuery query = QSqlQuery(database);
query.exec(sql);
const int memCount = query.record().count();
// query loop goes here