Qt SQLite Обращение к результатам select'а через названия полей

310
23 декабря 2016, 14:10

Сейчас моё обращение к БД выглядит так:

   QVector<QStringList> VectorOfRecords;
        QueryConstructor SelectAll;
        SelectAll.setTableName(QStringLiteral("TableName"));
        SelectAll.setOrderByClause("Id", Descending);
        QSqlQuery getRecordsQuery(Database);
        if( getRecordsQuery.exec(SelectAll.constructSelectQuery()))
        {
            while (getRecordsQuery.next())
            {
                QStringList Row;
                for (int i = 0;i < 9;i++)
                {
                    Row.push_back(getRecordsQuery.value(i).toString());
                }
                VectorOfRecords.push_back(Row);
            }
        }
        else
        {
            QMessageBox::critical(NULL, QObject::tr("Error"), getRecordsQuery.lastError().text());
        }

QueryConstructor это мой класс, в данном примере он составляет запрос на вывод всей таблицы целиком.

Я хочу тут заменить это

getRecordsQuery.value(i)

на обращение не по индексу, а по названию. Потому что по циферкам обращаться как-то ненадежно и нечитаемо, мне кажется. Как это можно сделать? Так-то все работает, но хочется сделать более гибкую систему.

Answer 1

Я хочу тут заменить это

Посмотрите QVariant QSqlQuery::value(const QString &name) const - это перегруженный вариант. То, что вам надо.

READ ALSO
Можно ли вызвать MPI_Init() внутри своей функции?

Можно ли вызвать MPI_Init() внутри своей функции?

В сигнатуре указано int MPI_Init( int* argc, char*** argv), что как бе намекает на то, что я данную функцию могу вызвать только внутри int main(int argc, char** argv)

277
Наследование С++ [требует правки]

Наследование С++ [требует правки]

Требуется организовать множественное наследование на языке С++ по данной схеме:

286
Замена данных в ячейках float [требует правки]

Замена данных в ячейках float [требует правки]

Имеется некоторое число floatНеобходимо написать программу, которая заменяет в представлении этого числа последний байт на значение "0xAA" и, после...

259