2010-12-09 12 views
8

Ahora estoy trabajando Aplicación JSON usando SQLLite para almacenados todos los valores values.The JSON se almacenan correctamente y estoy para traer los datos a continuación SQLLite error es producido por favor, ayúdame ...cómo resolver CursorIndexOutOfBoundsException

12-09 13:51:22.808: ERROR/AndroidRuntime(217): Uncaught handler: thread main exiting due to uncaught exception 
12-09 13:51:22.808: ERROR/AndroidRuntime(217): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:172) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at ez.com.Action_module_screen.setListval1(Action_module_screen.java:1059) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at ez.com.Action_module_screen$4.handleMessage(Action_module_screen.java:695) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.os.Looper.loop(Looper.java:123) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
12-09 13:51:22.808: ERROR/AndroidRuntime(217):  at dalvik.system.NativeStart.main(Native Method) 

Esta es mi fuente:

    Cursor curser=myDB.rawQuery("select * from "+TABLE_NAME+"",null); 
if(curser.moveToFirst()) 
    { 
     int k=0; 
     System.out.println("enter first"); 
     do 
     { 
     System.out.println("enter second"); 
     if(status1==true) 
     { 
     System.out.println("enter third"); 
     for(int i=0;i<items.length;i++) 
     { 
     System.out.println("item"+items.length); 
     System.out.println("enter fourth"); 
     Cursor dbcur = myDB.rawQuery("select * from "+TABLE_NAME+" where Status='"+items[i]+"'", null); 
     System.out.println("enter fifth"); 
     int title=curser.getColumnIndex("Title"); 
     String tit=curser.getString(title); 
     System.out.println("value"+tit); 

    /* String title1=dbcur.getString(dbcur.getColumnIndex("Title")); 
     System.out.println("title"+title1); 
     String name1=dbcur.getString(dbcur.getColumnIndex("Name")); 
     System.out.println("name"+name1); 
     String open1=dbcur.getString(dbcur.getColumnIndex("Open")); 
     System.out.println("open"+open1); 
     String close1=dbcur.getString(dbcur.getColumnIndex("Close")); 
     System.out.println("close"+close1); 
     String no1=dbcur.getString(dbcur.getColumnIndex("No")); 
     System.out.println("no"+no1); 
     no.add(no1+","+k); 
    first.put(no1+","+k, title1); 
    second.put(no1+","+k,name1); 
    third.put(no1+","+k, open1); 
    fourth.put(no1+","+k,close1); 
    k=k+1; 
    mylist=sorting(no,1,true); */ 

    } 

     } 


     }while(curser.moveToNext()); 
    } 
    curser.close(); 
    myDB.close(); 

      } 

Respuesta

4

¿Qué es el "cursor" de Cursor definido? Puede por favor publicarlo

Editar: Como puedo ver, su segundo cursor dbcur no se coloca en ninguna posición, por lo que está en su posición superior -1. Por favor, trate de colocar con dbcur.moveToFirst() o dbcur.moveToNext()

+0

que he añadido a mi nuevo código ......... – user533787

+0

que he podido ver, el segundo cursor dbcur ISN' t colocado en cualquier posición, por lo que está en su posición superior -1. Intenta colocarlo con movetofirst() o movetonext(). – Thrawn80

+0

su análisis debe corregir, tal vez debería actualizar su respuesta por ese ... – st0le

0

Soy seleccionar sólo el estado value.so sólo un cursor es suficiente .... A continuación el trabajo ........ código correcto

código correcto:

Cursor dbcur = myDB.rawQuery("select * from "+TABLE_NAME+" where Status='"+items[i]+"'", null); 
       if(dbcur.moveToFirst()) 
        { 
         int k=0; 
         System.out.println("enter first"); 
         do 
         { 

         String title1=dbcur.getString(dbcur.getColumnIndex("Title")); 
         System.out.println("title"+title1); 
         String name1=dbcur.getString(dbcur.getColumnIndex("Name")); 
         System.out.println("name"+name1); 
         String open1=dbcur.getString(dbcur.getColumnIndex("Open")); 
         System.out.println("open"+open1); 
         String close1=dbcur.getString(dbcur.getColumnIndex("Close")); 
         System.out.println("close"+close1); 
         String no1=dbcur.getString(dbcur.getColumnIndex("No")); 
         System.out.println("no"+no1); 
         no.add(no1+","+k); 
         first.put(no1+","+k, title1); 
         second.put(no1+","+k,name1); 
         third.put(no1+","+k, open1); 
         fourth.put(no1+","+k,close1); 
         k=k+1; 
         mylist=sorting(no,1,true); 

         }while(dbcur.moveToNext()); 
        } 
        dbcur.close(); 
        myDB.close(); 
+0

De cualquier forma Gracias por su respuesta ..... – user533787

22

De cualquier haces

if(cursor.moveToFirst() && cursor.getCount() >= 1){ 
    do{ 
    .... 
     .... 

}while(cursor.moveToNext()); 

O que puede hacer

if(cursor.getCount() >= 1){ 
    while(cursor.moveToNext()){ 
     .... 
     .... 

} 

El cursor es la posición en el índice -1 inicialmente

Cuestiones relacionadas