我想从上次查询中获取行数。
我使用了 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
。
我想通过查询或函数获取行数。
最佳答案
SQLite 不支持
qry.size()
。 QSqlQuery::last ()
检索结果中的最后一条记录(如果可用)并将查询定位到检索到的记录上。调用 last()
后,您可以检索最后一条记录的索引,并使用 first()
和 previous()
将查询定位在第一条记录之前:
int numberOfRows = 0;
if(qry.last())
{
numberOfRows = qry.at() + 1;
qry.first();
qry.previous();
}
关于c++ - 如何获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706408/