c++ - 列数。 QMYSQLResult::data: 列超出范围

标签 c++ qt qt4

有数据库。具有未知列数的查询。需要将所有答案放在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/

相关文章:

c++ - MIME 类型到文件扩展名的跨平台映射库,反之亦然

c++ - CentOS 上的 GDB 忽略 gdbinit 文件

c++ - 编译llvm 3.1时,为什么会出错: ‘>’ token 之前的预期主表达式

c++ - Qt中如何在循环中从单独运行的子线程中调用父线程函数

多列中的 QTreeView/QAbstractItemModel 子树

c++ - 在 QNetworkRequest 中设置 header 时遇到问题

c++ - 解决 Visual Studio 2010 AlwaysCreate 重建问题

c++ - 为什么这段代码输出文字 "\n"而不是换行符?

c++ - Qt检测计算机何时进入休眠状态?

qt - 确定 Qt 中哪个菜单项被触发