2010-11-29 7 views
5

J'essaie de créer une méthode pour récupérer l'ID max d'une table spécifique.Android et SQLite - récupérer max ID d'une table

C'est le code qui ne fonctionne pas:

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; 
} 

L'exception levée est la suivante:

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

Je suppose que le problème est cette ligne:

  id = cursor.getInt(0); 

Est-ce que quelqu'un a une idée de comment résoudre ce problème?

Merci.

Répondre

8

Essayez de remplacer:

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

avec

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

De l'rawQuery description, pour le 2ème argument:?

Vous pouvez inclure s dans la clause WHERE dans la requête, qui sera remplacée par les valeurs de selectionArgs. Les valeurs seront liées en tant que chaînes.

Étant donné que vous n'avez aucun espace réservé dans votre requête SQL, c'est peut-être la source du problème.

Questions connexes