2012-09-18 1 views
0

J'ai une classe de gestionnaire de base de données où je compile une table qui a deux colonnes. la première colonne étant un entier, et je suis en train d'écrire une méthode qui renverra toutes les valeurs dans cette colonne comme une liste:comment obtenir tous les ID d'une base de données sqlite

public List<Integer> getAllStyleIDs(){ 
     List<Integer> results = null; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     // Select All Query 
     String selectQuery = "select * from " + DBConstants.allStyles; 

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

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 

       results.add(cursor.getInt(0)); 


      } while (cursor.moveToNext()); 
     } 
     cursor.close(); 
     db.close(); 

     return results; 
    } 

mais je reçois une exception point zéro

des idées?

+1

Pouvez-vous poster la sortie LogCat lorsque l'erreur se produit? – silentw

Répondre

3

Votre liste results est null, alors vous tentez d'y ajouter. Essayez ceci:

List<Integer> results = new ArrayList<Integer>(); 
+0

merci .. apparemment j'ai besoin de dormir plus – erik

1

Première chose: la liste n'a pas été initialisée. Deuxième chose: l'utilisation des requêtes brutes n'est pas recommandé:

Essayez quelque chose comme ceci:

List<Integer> results = new ArrayList<Integer>(); 
    this.database = this.getReadableDatabase(); 

    String [] columns = {_ID}; // name of the column 

    Cursor cursor = this.database.query(COURSES_TABLE, columns, null, null, null, null, null); 

    int iId = cursor.getColumnIndex(_ID); 

    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) 
    { 
     Integer rowId = cursor.getInt(iName); 
     results.add(rowId); 
    } 

    cursor.close(); 
    this.database.close(); 

    return results; 
Questions connexes