Как получить идентификатор из вновь вставленной строки с помощью QSqlQuery и SQLite?

У меня есть таблица T, в которой есть поле id, которое является INTEGER PRIMARY KEY AUTOINCREMENT, и поле INTEGER f. С Qt5 я вставляю строку со следующим кодом:

QSqlQuery insert;
insert.exec("INSERT INTO T (f) VALUES (0)");

Но как мне получить id только что вставленного поля?


person Ramiro    schedule 19.06.2019    source источник


Ответы (1)


Вы должны использовать метод lastInsertId() для QSqlQuery:

QSqlDatabase db = QSqlDatabase::database();
if(db.driver()->hasFeature(QSqlDriver::LastInsertId)){
    QSqlQuery insert;
    bool res = insert.exec("INSERT INTO T (f) VALUES (0)");
    Q_ASSERT(res);

    QVariant id = insert.lastInsertId();
    Q_ASSERT(id.isValid() && !id.isNull());
    qDebug() << id.toInt();
}
person eyllanesc    schedule 19.06.2019
comment
Где определена эта переменная last_id? - person Ramiro; 19.06.2019
comment
@Ramiro Я забыл его стереть, я выполнял функциональный тест с несколькими вставками, в данном случае это не нужно - person eyllanesc; 19.06.2019