Я хочу получить количество строк из последнего запроса.
я использовал size()
а также numRowsAffected()
функции, но ни одна из них не работает.
Я написал следующий код:
int counter = 0;
QStringList TableHeader;
QSqlQuery qry;
qry.prepare("SELECT *, (SELECT COUNT(*) FROM users) AS count FROM users");
qry.exec();
qDebug() << qry.value("count").toString(); // <<-- print the count of rows
ui->tableWidget->setRowCount(10);
ui->tableWidget->setColumnCount(3);
TableHeader << "Username" << "Password" << "Age";
ui->tableWidget->setHorizontalHeaderLabels(TableHeader);
while (qry.next()) {
ui->tableWidget->setItem(counter, 0, new QTableWidgetItem(qry.value("username").toString()));
ui->tableWidget->setItem(counter, 1, new QTableWidgetItem(qry.value("password").toString()));
ui->tableWidget->setItem(counter, 2, new QTableWidgetItem(qry.value("age").toString()));
ui->tableWidget->item(counter, 0)->setData(Qt::UserRole, qry.value("id").toString());
counter++;
}
Но, к сожалению, это не работает нормально и выдает ошибку QSqlQuery::value: not positioned on a valid record
,
Я хочу получить количество строк, используя запрос или функцию.
qry.size()
не поддерживается с SQLite. QSqlQuery::last ()
извлекает последнюю запись в результате, если она доступна, и помещает запрос в извлеченную запись. После звонка last()
Вы можете получить индекс последней записи и расположить запрос перед первой записью, используя first()
а также previous()
:
int numberOfRows = 0;
if(qry.last())
{
numberOfRows = qry.at() + 1;
qry.first();
qry.previous();
}