Qtでsqliteを使用してフィルタされた行列数を取得

696 ワード

まず考えを言います.
列の取得:
query文を直接実行した後、sqlrecordでカラムを取得します.
コードは次のとおりです.
int queryColumnCount(QSqlQuery query)
{
    QSqlRecord sqlRecord = query.record();
    return sqlRecord.count();
}

取得行数:
もquery文を実行した後、lastポインタで取得します
コードは次のとおりです.
int queryRowCount(QSqlQuery query)
{
    int initialPos = query.at();
    // Very strange but for no records .at() returns -2
    int pos = 0;
    if (query.last()){
        pos = query.at() + 1;
    }else{
        pos = 0;
    }
    // Important to restore initial pos
    query.seek(initialPos);
    return pos;
}

これはpos計算後にqueryのポインタをヘッダアドレスに配置し、後で使用してデータが取得されないようにする必要があることに少し注意してください.