2012-04-07 264 views
1

您可以告诉我如何从数据库中获取Qt列的最后一个值。如何从数据库中获取最后一个值(postgre)并将其显示在Qt中

我知道我可以使用while循环获取最后一个值,但这对于程序来说太多了。

+0

你的意思是行ID(或主索引),或包含在最高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表? – alexisdm 2012-04-07 15:46:38

+0

@alexisdm @alexisdm我的意思是最后一次插入操作 – depecheSoul 2012-04-07 16:02:12

回答

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(); 
     } 
    } 
} 

解决方案

+0

获得最后一项这不是一个很好的解决方案,因为即使只使用其中的一个,数据库也可能必须生成所有行。如果你只想要最后一行,使用'SELECT Ime,Prezime,id tabela order by id desc limit 1'。 – alexisdm 2012-04-08 12:47:04

1

对我来说,没有什么工作是我发现谷歌和这里。最后我找到解决方案。最后插入操作的

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); 
相关问题