【发布时间】:2014-02-17 19:11:00
【问题描述】:
我正在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();
}
如何在模型的本地副本上运行查询?
【问题讨论】:
-
“本地副本”是什么意思?什么副本?
-
@Googie 我的意思是我的模型中的远程 SQL 数据的副本,而不是我服务器上的 SQL 数据库中的在线数据。当我提交我的模型时,这两个将同步。
-
QSqlTableModel 实现了 QAbstractItemModel,因此它提供了用于访问其中数据的标准 API,主要是 QAbstractItemModel::data()。 QSqlTableModel 将 SQL 查询委托给 QSqlQuery。您不能直接在 QSqlQueryModel 上执行 SQL 查询,因为它不是 SQL 解释器。
标签: c++ sql qt qsqlquery qsqltablemodel