Android数据库查询获取nullPointer



我在查询数据库时遇到问题。(sqlitedb)

我想查询数据库中的2个选项,当我查询第一行时,一切都可以,但当我想查询第二行时,我得到了空指针。

看看我的代码:

public AbsenceData getAbsence( int _subjectId, long date ) {
    AbsenceData absence = null;
    Cursor cursor = null;
            cursor = mDb.query(
            ABSENCES_TABLE_NAME, 
            new String[] { ABSENCE_TYPE, ABSENCE_NOTE }, 
            SUBJECT_ID + "=?" + " AND " + ABSENCE_DATE + "=?", 
            new String[] { String.valueOf( _subjectId), String.valueOf( date ) },
            null, null, null
            );
    if( cursor.moveToFirst() ) {
        absence = new AbsenceData( 0, 0, 0l,cursor.getInt( 0 ), cursor.getString( 1 ));
    }
    return absence;
}

我有两个论点:subjectId和date,例如,我查询subjectId=1,date=today->>我得到了想要的数据,但是当我查询subjectId=1,date=tomorrow时->>nullpointer,

数据库中还有什么,我明天可以看到,所以它应该会给我想要的数据,但它没有。。。

提前感谢您的帮助。

但当我想查询第二行时,我得到了空指针

如果你假设可以有不止一行,我建议你使用正确的循环:

if (c.moveToFirst()) {
   do {
      Absence a = new Absence();
      a.setName(c.getString(c.getColumnIndex("name")));
      ...
   } while (c.moveToNext());
}

特别是在您的情况下,您的NPE会被抛出,因为如果您超过了明天的日期,您的光标将为,并且您的条件不适用,因此您的缺勤将被分配给NULL并在此状态下返回。

如果你想修复它,你需要像这样初始化你的对象:

AbsenceData absence = new AbsenceDate();


注意:如果只创建参数化,则需要添加默认构造函数。

最新更新