Получить номер последней обработанной записи
Синтаксические правила
QVariant QSqlQuery::lastInsertId() const;
Описание
Метод предоставляет информацию о номере последней обработанной записи при
выполнении операции insert
/update
/delete
.
Возвращаемое значение
Возможные значения:
-
указатель на QVariant-объект при успешном обновлении данных. Значение QVariant содержит RowId последней обработанной записи при выполнении операции
insert
/update
/delete
; -
указатель на недействительный QVariant-объект в случае ошибки доступа к БД;
-
0, если реального добавления/изменения/удаления записей не произошло.
Метод возвращает корректное значение RowId только в случае его вызова сразу
после выполнения операции insert
/update
/delete
. Если после указанных операций
был выполнен select-запрос, то возвращаемое значение RowId будет некорректным.
Пример
QSqlDatabase db = QSqlDatabase::addDatabase( "QLINTER" ); db.setUserName( "SYSTEM" ); db.setPassword( "MANAGER8" ); if( !db.open() ) { cout < < db.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } QSqlQuery query; query.exec("create or replace table Colors (color varchar(20));"); query.exec("insert into Colors (color) values ('Red'),('Green');"); if (query.lastError().isValid()) { cout < < query.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } QVariant sKey = query.lastInsertId(); if (!sKey.isValid()) { cout < < db.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } cout < < "RowId добавленной записи " < < sKey.toString().toLocal8Bit().data() < < endl; query.exec("update Colors set color ='Black' where color='Red';"); if (query.lastError().isValid()) { cout < < query.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } sKey = query.lastInsertId(); if (!sKey.isValid()) { cout < < db.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } cout < < "RowId измененной записи " < < sKey.toString().toLocal8Bit().data() < < endl; query.exec("delete from Colors where color = '12345';"); if (query.lastError().isValid()) { cout < < query.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } sKey = query.lastInsertId(); if (!sKey.isValid()) { cout < < db.lastError().driverText().toLocal8Bit().data() < < endl; return 1; } cout < < "RowId удаленной записи " < < sKey.toString().toLocal8Bit().data() < < endl; Результат выполнения примера: RowId добавленной записи 2 RowId измененной записи 1 RowId удаленной записи 0