1

データベースを持っています。不明な列数のクエリがあります。すべての回答を 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 など) を使用したくありません。

4

1 に答える 1

1

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
于 2013-09-24T10:44:41.533 に答える