0

2 つの列を持つテーブルを作成するデータベース マネージャー クラスがあります。最初の列は整数で、その列のすべての値をリストとして返すメソッドを作成しようとしています:

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は null であり、それに追加しようとしています。これを試して:

List<Integer> results = new ArrayList<Integer>();
于 2012-09-18T16:59:56.047 に答える
1

まず、リストが初期化されていません。2番目のこと:生のクエリを使用することはお勧めしません:

次のようなものを試してください。

    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 に答える