有数据库。具有未知列数的查询。需要将所有答案放在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
关于c++ - 列数。 QMYSQLResult::data: 列超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18979327/