0

我有一个数据库管理器类,我在其中构建了一个包含两列的表。第一列是一个整数,我正在尝试编写一个方法,将该列中的所有值作为列表返回:

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

但我得到一个空点异常

有任何想法吗?

4

2 回答 2

3

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

List<Integer> results = new ArrayList<Integer>();
于 2012-09-18T16:59:56.047 回答
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;
于 2012-09-18T20:50:05.930 回答