androidandroid-cursor

Method invocation may produce java NullpointerException


I have a code:

public String getNameUpdateEvent(long id) {
    Cursor mCursor =
            db.rawQuery("select name from events WHERE _id=" + id + ";", null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    String updateNameEvent;
    updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name"));
    return updateNameEvent;
}    

and I´m getting a warning

    Warning:(173, 45) Method invocation 'mCursor.getColumnIndex("name")' may produce 'java.lang.NullPointerException'

How i can fix it pls?


Solution

  • Your cursor can not be null, it will always have any value. But cursor can be empty, so you should firstly go to first row in cursor with method moveToFirst(), and if it returns true - it means, that cursor has at least one row, so you can do with it all you want, if it returns false - it means, that there is nothing for your query, so you have not any rows to get data from. Your code should look like this:

    public String getNameUpdateEvent(long id) {
        Cursor mCursor =
            db.rawQuery("select name from events WHERE _id=" + id + ";", null);
    
        String updateNameEvent = null;
        if (mCursor != null && mCursor.moveToFirst()) {
            updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name"));
        }
        return updateNameEvent;
    }