Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Obtener el último valor insertado de sqlite database Android

Estoy tratando de obtener el último rowid insertado de una base de datos sqlite en Android. He leído un montón de artículos sobre él, pero no puedo conseguir uno para trabajar. Este es mi método:

public Cursor getLastId() { return mDb.query(DATABASE_TABLE, new String[] {KEY_WID}, KEY_WID + "=" + MAX(_id), null, null, null, null, null);} 

He intentado con MAX, pero debo estar usando mal. ¿Hay otra manera?

  • Cómo agregar la clave principal al tipo de datos de texto en android sqlite?
  • OnCreate () no es llamado por getWritableDatabase ()
  • SQLite Base de datos "contexto" pasó a adaptador
  • Copia de seguridad y restauración de la base de datos SQLite a sdcard
  • Visualización de valores nulos después de que los primeros usuarios inicien sesión en android
  • Sqlite eliminar la sintaxis de consulta en Android
  • ¿Cómo actualizo mi ListView después de los cambios en la base de datos?
  • ¿Qué caracteres no se pueden utilizar para valores en bases de datos SQLite?
  • 8 Solutions collect form web for “Obtener el último valor insertado de sqlite database Android”

    Bueno, en realidad, la clase SQLiteDatabase tiene su propio método de inserción que devuelve el ID de la fila recién creada. Creo que esta es la mejor manera de obtener el nuevo ID. Puede consultar su documentación aquí .

    Espero que esto ayude.

    Utilizar

      SELECT last_insert_rowid(); 

    Para obtener el último rowid insertado. Si utiliza la palabra clave AUTOINCREMENT entonces

     SELECT * from SQLITE_SEQUENCE; 

    Le indicará los valores para cada tabla.

    Para obtener la última fila de la tabla ..

     Cursor cursor = theDatabase.query(DATABASE_TABLE, columns,null, null, null, null, null); cursor.moveToLast(); 

    Si desea que last_insert_id sólo afert un inserto, puede usarlo:

     public long insert(String table, String[] fields, String[] vals ) { String nullColumnHack = null; ContentValues values = new ContentValues(); for (int i = 0; i < fields.length; i++) { values.put(fields[i], vals[i]); } return myDataBase.insert(table, nullColumnHack, values); } 

    Prueba esto:

     public Cursor getLastId() { return mDb.query(DATABASE_TABLE, new String[] { **MAX(id)** }, null, null, null, null, null, null);} 
     /** * @return */ public long getLastInsertId() { long index = 0; SQLiteDatabase sdb = getReadableDatabase(); Cursor cursor = sdb.query( "sqlite_sequence", new String[]{"seq"}, "name = ?", new String[]{TABLENAME}, null, null, null, null ); if (cursor.moveToFirst()) { index = cursor.getLong(cursor.getColumnIndex("seq")); } cursor.close(); return index; } 

    Utilice moveToLast() en la interfaz del Cursor .

    Desde android.googlesource.com

     /** * Move the cursor to the last row. * * <p>This method will return false if the cursor is empty. * * @return whether the move succeeded. */ boolean moveToLast(); 

    Ejemplo simple:

     final static String TABLE_NAME = "table_name"; String name; int id; //.... Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); if(cursor.moveToLast()){ //name = cursor.getString(column_index);//to get other values id = cursor.getInt(0);//to get id, 0 is the column index } 

    O puede obtener la última fila cuando la inserción (que es @GorgiRankovski han mencionado):

     long row = 0;//to get last row //..... SQLiteDatabase db= this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(COLUMN_NAME, name); row = db.insert(TABLE_NAME, null, contentValues); //insert() returns the row ID of the newly inserted row, or -1 if an error occurred 

    También es una forma múltiple de hacerlo mediante la consulta:

    1. Uno es expresado por @DiegoTorresMilano
    2. SELECT MAX(id) FROM table_name . O para obtener todos los valores de las columnas SELECT * FROM table_name WHERE id = (SELECT MAX(id) FROM table_name) .
    3. Si su PRiMARY KEY ha sentado a AUTOINCREMENT , puede SELECT vaules ocurriendo de max a min y limitar las filas a 1 usando SELECT id FROM table ORDER BY column DESC LIMIT 1 (Si desea cada valor, utilice * lugar de id )

    El método insert devuelve el id de la fila insertada o -1 si hubo un error durante la inserción.

     long id = db.insert("your insertion statement"); 

    Db es una instancia de su SQLiteDatabase.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.