2012-09-18 54 views
0

我有一个数据库管理器类,在那里我建立一个有两列的表。第一列是一个整数,我试图写将在该列返回所有值列表的方法:如何从sqlite数据库获取所有ID

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

,但我得到一个零点异常

什么想法?

+1

你能后的logcat的输出:

尝试这样的事情? – silentw

回答

3

您的列表results为空,那么您尝试添加到它。试试这个:

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

谢谢..显然我需要更多的睡眠 – erik

1

第一件事:该列表尚未初始化。 第二件事:建议不要使用原始查询:当发生错误

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; 
相关问题