0

モードで 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();
}

モデルのローカル コピーに対してクエリを実行するにはどうすればよいですか?

4

1 に答える 1

1

QSqlTableModel(またはより一般的にはQSqlQueryModel) は、クエリの実行を に委任しますQSqlQueryQModelIndexクエリからの結果が受信されると、行と列を含むテーブルの形式で内部的に保存され、 と を使用してアクセスできますQAbstractItemModel::data()

QSqlTableModelそれ自体は SQL インタープリターではありません。全くない。分析ルーチンは提供されません。それはこのクラスの目的ではありません。モデル内のデータの分析が必要な場合は、自分で作成する必要があります。

于 2014-01-28T13:49:40.980 に答える