Java:游标返回null

时间:2016-05-22 18:02:24

标签: java android database

我有一个DB。可能有空字段。 当我尝试使用光标从空字段获取值时,我得到NullPointerExeption。

我找到了try-catch的解决方案:

    try {
        subject.setName(cursor.getString(2));
    } catch (NullPointerException e) {}
    try {
        subject.setTrainer(cursor.getString(3));
    } catch (NullPointerException e) {}
    try {
        subject.setLocation(cursor.getString(4));
    } catch (NullPointerException e) {}

但我不喜欢它。可以有更有吸引力的解决方案吗?

5 个答案:

答案 0 :(得分:0)

if (cursor != null)
{
    subject.setName(cursor.getString(2));
    subject.setTrainer(cursor.getString(3));
    subject.setLocation(cursor.getString(4));
}

这会有用吗?检查以确保光标不是先为空?

答案 1 :(得分:0)

像这样检查空值:

    if (cursor != null) {//if cursor can achieve null value. I don't know your code before
String str2 = cursor.getString(2);
    if (str2 != null) {
        //...
    subject.setName(str2);
        }
        }

答案 2 :(得分:0)

如果游标对象为null,则它将给出空指针异常。如果对象不为null,则可以检查对象参数是空还是null。通过这种方式,你可以做到。

if(cursor != null) {
    // cursors argument you can check here.
    if(cursor.getString(2) != null) {
        subject.setName(cursor.getString(2));
    }
    ---
    ---
}

答案 3 :(得分:0)

或者:

  1. subject为空,
  2. cursor为空,或
  3. 如果参数为null,
  4. subject.setName()将抛出NullPointerException
  5. 根据您提供的少量信息,无法说出哪些信息,但堆栈跟踪会告诉您。在没有try/catch的情况下,很容易防御任何这些条件。

答案 4 :(得分:0)

您可以在调用 getString(index)之前检查 null 值。

if( !cursor.isNull(2) ){
    subject.setName(cursor.getString(2));
}

有关详细信息,请查看API here