你能告诉我如何从数据库中获取 Qt 列的最后一个值吗?
我知道我可以使用 while 循环获得最后一个值,但这对程序来说工作量太大。
您可以在插入查询之后尝试QSqlQuery::lastInsertId
(对于 Postgresql,查询必须仍然处于活动状态并且表必须包含 OID)。
如果它不起作用并且返回QVariant
无效,您可以尝试其他 Postgresql 方法:
postgreSQL function for last inserted ID
就我而言,我在谷歌和这里找到的东西都不起作用。最后我找到了解决方案。也许它没有优化和漂亮但工作正常
int SomeClass::get_last_id(QString sequence){
QSqlQuery query(QString("select currval('%1')").arg(sequence), this->dbh);
query.next();
return query.value(0).toInt();
}
与 QSqlTableModel 一起使用:
model->setTable(TABLE_NAME);
model->insertRows(0, 1);
model->setData(model->index(0, parent_domain), _domain);
model->setData(model->index(0, parent_token), _token.mid(0,19).toUpper());
model->setData(model->index(0, parent_name), _name);
model->submitAll();
int id = get_last_id(TABLE_SEQUENCE);
QSqlQuery sqlQuery;
sqlQuery.prepare("SELECT \"Ime\", \"Prezime\", \"ID\" FROM tabela;");
sqlQuery.exec();
if (sqlQuery.isActive()){
if (sqlQuery.isSelect()){
if (sqlQuery.last()){
QString string=sqlQuery.value(2).toString();
}
}
}
解决方案