我有一个数据库管理器类,我在其中构建一个包含两列的表。第一列是一个整数,我正在尝试编写一个方法,将该列中的所有值作为列表返回:
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;
}
但我得到一个零点异常
任何想法?
答案 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;