我想从上次查询中获取行数
我使用了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
。
我想通过使用查询或函数来获取行数。
答案 0 :(得分:3)
qry.size()
。 QSqlQuery::last ()
检索结果中的最后一条记录(如果可用),并将查询定位在检索到的记录上。调用last()
后,您可以检索最后一条记录的索引,并使用first()
和previous()
在第一条记录之前定位查询:
int numberOfRows = 0;
if(qry.last())
{
numberOfRows = qry.at() + 1;
qry.first();
qry.previous();
}