0

我在QSqlTableModel::OnManualSubmit模式下显示 QSqlTableModel。

我想在我的本地副本上运行 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();
}

如何在模型的本地副本上运行查询?

4

1 回答 1

1

QSqlTableModel(或更一般地QSqlQueryModel)将查询执行委托给QSqlQuery. 当收到查询结果时,它们以包含行和列的表的形式在内部存储,您可以使用QModelIndexand访问它们QAbstractItemModel::data()

QSqlTableModel本身不是 SQL 解释器。一点也不。它不为您提供任何分析例程。这不是这堂课的目的。如果需要对模型中的数据进行分析,则必须自己编写。

于 2014-01-28T13:49:40.980 回答