CursorIndexOutOfBoundsException: Índice -1 solicitado, con un tamaño de 1

Estoy creando una aplicación que almacena entradas de diario. Al recuperar la entrada del diario recibo un CursorIndexOutOfBoundsException, creo que es algo que tiene que ver con mi SELECTdeclaración para obtener la información dentro de la base de datos.

    getDAO = new DAO(this);
    Cursor showDiaryEntries = getDAO.queryDiary(Diary.DiaryItem.FULL_PROJECTION, Diary.DiaryItem.COLUMN_NAME_DIARY_TITLE+" = "+fieldTitle, null);


    Long fieldDate = showDiaryEntries.getLong(1);
    Long fieldTime = showDiaryEntries.getLong(2);
    String fieldEntry = showDiaryEntries.getString(3);

    mDate.setText(String.valueOf(fieldDate));
    Log.i(TAG,"Field Date "+ fieldDate);
    mTime.setText(String.valueOf(fieldTime));
    Log.i(TAG,"Field Time "+ fieldTime);
    mEntry.setText(fieldEntry);
    Log.i(TAG,"Field Entry "+ fieldEntry);

He estado leyendo sobre este tipo de excepción y creo que puede tener que ver con cuando obtengo el String / Long, ya que no tengo un bucle. Aunque no entiendo completamente esto.

Gato de registro

03-07 07:10:59.475: E/AndroidRuntime(1471): FATAL EXCEPTION: main
03-07 07:10:59.475: E/AndroidRuntime(1471): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.democo.mydiary/com.democo.mydiary.DiaryEntryActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

Esperaba que alguien pudiera educarme sobre cuál es el problema. Gracias

Respuesta 1

Asegúrate de llamar:

showDiaryEntries.moveToFirst();

Haga esto antes de comenzar a hacer algo con el cursor. ¡Esto asegurará que el cursor comience en la PRIMERA fila de la base de datos!

Respuesta: 2

Cuando llena un cursor, se coloca ANTES del primer registro (cuyo índice es 0); ahora el índice del cursor es -1, que corresponde a la posición sin registro.

Por lo tanto, obtiene un error (intenta obtener los valores de las columnas sin fila).

Esta es la razón por la que siempre debe mover su primer cursor antes de comenzar a usarlo.

Respuesta: 3

public static void main (String [] args) {Scanner s = new Scanner (System.in); int num = s.nextInt (); int a = longitud num. // Esta parte System.out.println (a); } Si ingreso 4321, quiero ...

Aquí está el problema que estoy teniendo. En mi código kotlin (en un proyecto de Android), tengo algo como esto: val rDate = Util.formatDateAsIso8601 (Date ()) El formatDateAsIso8601 (Date inputDate) es un Java ...

Seguí todas las instrucciones proporcionadas en la documentación de broadleafcommerce. Podría ejecutar el sitio en jettyserver antes de realizar cambios en la integración de Mysql. pero después seguí el ...

Estoy preguntando sobre esta publicación: Cómo borrar la consola: Java La respuesta aceptada es para borrar la consola en Java es: Runtime.getRuntime (). Exec ("cls"); Sin embargo, el cartel mencionó que esto ...