如何从sqlite数据库中获取所有ID

时间:2012-09-18 16:56:01

标签: android android-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;
    }

但我得到一个零点异常

任何想法?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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;