Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Sqlite get last insert row id [duplicate]

Tags:

android

sqlite

Possible Duplicate:
Get generated id after insert

I want to get the last inserted row id in my android application using this code :

String query = "SELECT * from SQLITE_SEQUENCE";
int createdUserId = Integer.parseInt(dbHelper.executeSQLQuery(query).toString());

but the problem is that it's throws an exception that cannot convert dbHelper.executeSQLQuery(query).toString() to integer. I'm not really good at sqlite ,but i think that this should return the last row id which was inserted...which will definitely will be int (at least I think this way). So if this is not the right way, can someone please guide me how to get the last row id in android application.

Thanks!!!

like image 828
Android-Droid Avatar asked Sep 27 '11 20:09

Android-Droid


2 Answers

Your SQL statrment will return all the row ids, not just the latest. Try something like this...

SELECT ROWID from SQL_LITE_SEQUENCE order by ROWID DESC limit 1

Also note that I believe selecting from SQL_LITE_SEQUENCE will get the latest ID from ANY table, you can also access the SQL_LITE_SEQUENCE by selecting ROWID on any table, and getting just the IDs for that table. IE

SELECT ROWID from MYTABLE order by ROWID DESC limit 1

And thanks to MisterSquonk for pointing out the next step in the comments, adding it here for ease of reference later...

The query statement will then return a Cursor object containing the results, so to access the integer value you would do something like this (I'll substitute more common methods for your helper method, just for others sake)

String query = "SELECT ROWID from MYTABLE order by ROWID DESC limit 1";
Cursor c = db.rawQuery(query);
if (c != null && c.moveToFirst()) {
    lastId = c.getLong(0); //The 0 is the column index, we only have 1 column, so the index is 0
}

(Note that although the SQL Lite docs call ROWID and Integer, it is a 64 bit integer, so in Java it should be retrieved as a long.)

like image 141
FloatingCoder Avatar answered Nov 14 '22 12:11

FloatingCoder


Care to use "selectlast_insert_rowid()"? :)

like image 12
JimmyB Avatar answered Nov 14 '22 14:11

JimmyB