Android Sqlite get last insert row id

Possible Duplicate:
Get generated id after insert

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

  • How can we work-around the blank title in PagerTitleStrip and PagerTabStrip?
  • Error using Jack compiler - app/build/intermediates/packaged/debug/classes.zip' is an invalid library
  • What's the difference between android:lineSpacingExtra and android:lineSpacingMultiplier?
  • making a GSON request using volley
  • LoaderManager with multiple loaders: how to get the right cursorloader
  • proguard-project.txt not found in android studio
  • 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!!!

  • How can I programmatically include layout in Android?
  • How to determine if an Android device has a touchscreen?
  • How can I format a String number to have commas in android Edit Field
  • android:dither=“true” does not dither, what's wrong?
  • Drag and drop sorting of cursor adapter and list adapter
  • Find new control point when endpoint change in cubic bezier curve
  • 2 Solutions collect form web for “Android Sqlite get last insert row id”

    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.)

    Care to use “selectlast_insert_rowid()“? 🙂

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.