QSqlQuery lastInsertId()
-
Hi everyone,
I tried to get last id through QSqlQuery::lastInsertId().QSqlDatabase myDb = QSqlDatabase::addDatabase("QMYSQL"); myDb.setHostName ("localhost"); myDb.setUserName ("root"); myDb.setPassword (""); myDb.setDatabaseName("testdatabase"); qDebug()<<"Started!"; if(myDb.open()){ qDebug()<<"Database Connected!"; }else{ qDebug()<<myDb.lastError(); } bool avFeature = myDb.driver()->hasFeature(QSqlDriver::LastInsertId); qDebug()<<"LastInsertedId is availabe: " << avFeature; QSqlQuery myQuery(myDb); if (myQuery.exec("SELECT id FROM users")) qDebug()<<"Last ID: "<<myQuery.lastInsertId();
Output:
Started! Database Connected! LastInsertedId is availabe: true Last ID: QVariant(Invalid)
Database:
-
@CodeFreaks said in QSqlQuery lastInsertId():
QSqlQuery::lastInsertId()
gives you the ID from the last row inserted via an
INSERT
statement immediately preceding on thatQSqlQuery
(so that you can tell which row it just inserted). I don't know what you think you're trying to do here, but since you do noINSERT
you'll not get any valid value back.P.S. Do you want to know the highest
id
column value currently in that table? Then justmyQuery.exec("SELECT MAX(id) FROM users")
returns it. -
@CodeFreaks
So that's what my "P.S." guess above gave you.... -
@CodeFreaks said in QSqlQuery lastInsertId():
I don't know that what's wrong.
You forgot to retrieve the data with .next() - see http://doc.qt.io/qt-5/qsqlquery.html#details
-
This post is deleted!