2012-04-07 11 views
1

Qtにデータベースのcolumnの最終値を取得する方法を教えてください。データベース(postgre)から最後の値を取得してQtに表示する方法

私はwhileループを使って最後の値を得ることができると知っていますが、それはプログラムにとって大変な作業です。

+0

あなたは行ID(またはプライマリインデックス)を意味するか、最後の挿入操作、またはに含まれる最高のidのをテーブル? – alexisdm

+0

@alexisdm最後の挿入操作を意味します – depecheSoul

答えて

1

あなただけのINSERTクエリ(PostgreSQL用、クエリがまだアクティブでなければならず、テーブルがOIDを含まなければならない)の後、QSqlQuery::lastInsertIdを試すことができます。

それは動作しませんと返さQVariantが無効である場合は、他のPostgresqlの方法を試すことができます。
postgreSQL function for last inserted ID

+0

postgreSQLとQt – depecheSoul

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

から最後のエントリを取得する方法を見つけました。データベースが1つしか使用していなくてもすべての行を生成しなければならない可能性があるため、最後の行だけが必要な場合は、 'Select Ime、Prezime、id from tab desc limit 1'を使用してください。 – alexisdm

1

私の場合、何も仕事で、私は中に見つけたものgoogleとここに。最後に私は解決策を見つけた。多分それは、最適化されており、かなりしかしQSqlTableModelと罰金

int SomeClass::get_last_id(QString sequence){ 
    QSqlQuery query(QString("select currval('%1')").arg(sequence), this->dbh); 
    query.next(); 
    return query.value(0).toInt(); 
} 

使用動作していない:

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); 
関連する問題