1

データベースから列の最後の値をQtで取得する方法を教えてください。

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

4

3 に答える 3

1

QSqlQuery::lastInsertId挿入クエリの直後に試すことができます(Postgresqlの場合、クエリはまだアクティブであり、テーブルにはOIDが含まれている必要があります)。

それが機能せず、返されたQVariantものが無効である場合は、他のPostgresqlメソッドを試すことができます:
最後に挿入されたIDのpostgreSQL関数

于 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 に答える