Как запросить локальный QSqlQueryModel?

Я отображаю QSqlTableModel в QSqlTableModel::OnManualSubmit Режим.

Я хочу выполнить запросы в стиле SQL на моей локальной копии, например, у меня есть getMax функция, которая меняется по мере добавления новых строк. Если мой пользователь локально изменяет QSqlTableModel во время взаимодействия я ожидаю getMax произвести другой ввод, но вместо getMax Функция удаленно запрашивает данные, и результат всегда будет одинаковым, независимо от изменений, внесенных пользователем.

int TestMe::getMax(QString col,QString table)
{
    QSqlQuery query;
    sf(query.exec("SELECT MAX("+col+") FROM "+table));
    sf(query.first());
    auto rec = query.record();
    return rec.field(0).value().toInt();
}

Как мне выполнить запросы к моей локальной копии модели?

1 ответ

Решение

QSqlTableModel (или в более общем QSqlQueryModel) делегирует выполнение запроса QSqlQuery, Когда результаты запроса получены, они хранятся внутри в виде таблицы со строками и столбцами, и вы можете получить к ним доступ, используя QModelIndex а также QAbstractItemModel::data(),

QSqlTableModel сам не является интерпретатором SQL. Не за что. Он не предоставляет никаких процедур анализа для вас. Это не цель этого класса. Если вам нужен анализ данных в модели, вы должны написать это самостоятельно.

Другие вопросы по тегам