Search code examples
javaandroidbuttoncursor

What does CursorIndexOutOfBoundsException mean?


InfoAPI.java

When I click Save button, it crashed. How can I fix this?

public long insertTimeSheet(String name,String weather,String date,String status)
    {
        database=dbHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put(MyDatabaseHelper.Name,name);
        values.put(MyDatabaseHelper.Weather,weather);
        values.put(MyDatabaseHelper.Date,date);
        values.put(MyDatabaseHelper.Status, status);
        Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
        database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
        return cursor.getLong(0);

    }

LogCat

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
            at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
            at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
            at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
            at com.example.project.project.API.InfoAPI.insertTimeSheet(InfoAPI.java:42)

I have posted a question regarding to Foreign Key.

Getting NULL value in foreign key column


Solution

  • public long insertTimeSheet(String name,String weather,String date,String status){
      database=dbHelper.getWritableDatabase();
      ContentValues values=new ContentValues();
      values.put(MyDatabaseHelper.Name,name);
      values.put(MyDatabaseHelper.Weather,weather);
      values.put(MyDatabaseHelper.Date,date);
      values.put(MyDatabaseHelper.Status, status);
      database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
      Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
      if(cursor.getCount()>0){
        cursor.moveToFirst();
        return cursor.getLong(0);
      }
    
      return 0;
    }