1

你能告诉我如何从数据库中获取 Qt 列的最后一个值吗?

我知道我可以使用 while 循环获得最后一个值,但这对程序来说工作量太大。

4

3 回答 3

1

您可以在插入查询之后尝试QSqlQuery::lastInsertId(对于 Postgresql,查询必须仍然处于活动状态并且表必须包含 OID)。

如果它不起作用并且返回QVariant无效,您可以尝试其他 Postgresql 方法:
postgreSQL function for last inserted ID

于 2012-04-07T16:21:41.880 回答
1

就我而言,我在谷歌和这里找到的东西都不起作用。最后我找到了解决方案。也许它没有优化和漂亮但工作正常

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);
于 2016-08-08T10:05:12.333 回答
0
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();
        }
    }
}

解决方案

于 2012-04-08T07:45:02.953 回答