2010-11-29 23 views
5

Estoy intentando crear un método para recuperar el ID máximo de una tabla específica.Android y SQLite: recuperación del ID máximo de una tabla

Este es el código que no funciona:

private long getMaxId() 
{ 
    String query = "SELECT MAX(id) AS max_id FROM mytable"; 
    Cursor cursor = db.rawQuery(query, new String[] {"max_id"}); 

    int id = 0;  
    if (cursor.moveToFirst()) 
    { 
     do 
     {   
      id = cursor.getInt(0);     
     } while(cursor.moveToNext());   
    } 
    return id; 
} 

La excepción está lanzando es la siguiente:

E/AndroidRuntime(24624): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x200408 

supongo que el problema es esta línea:

  id = cursor.getInt(0); 

¿Alguien tiene una idea de cómo solucionar esto?

Gracias.

Respuesta

8

intente reemplazar:

Cursor cursor = db.rawQuery(query, new String[] {"max_id"}); 

con

Cursor cursor = db.rawQuery(query, null); 

Desde el rawQuery description, para el segundo argumento:?

Usted puede incluir s en la cláusula where de la consulta, que será reemplazado por los valores de selectionArgs. Los valores se vincularán como cadenas.

Dado que no tiene ningún marcador de posición en su consulta SQL, tal vez sea la fuente del problema.

Cuestiones relacionadas