2014-07-09 57 views
0

我試圖在我的應用程序中實現分數功能,但我總是得到主標題中的相同錯誤,我的錯誤在以下按鈕錯誤-android.database.CursorIndexOutOfBoundsException:索引0請求,大小爲0

 em=bundle.getString("EMAIL"); 
    SQL usdbh =new SQL (this, "DBUsuarios", null, 1); 
    final SQLiteDatabase db = usdbh.getWritableDatabase(); 
    button2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) 
     { 
      Cursor c = db.rawQuery(" SELECT p1,p2,p3,p4,p5 FROM Usuarios WHERE Email='"+em+"' ", null); 
       c.moveToFirst(); 
        p1= c.getInt(0); 

         p2= c.getInt(1); 

         p3= c.getInt(2); 

        p4= c.getInt(3); 

        p5= c.getInt(4); 

        if(n7>p1){ 
         db.execSQL("UPDATE Usuarios SET p1="+n7+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p2="+p1+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p3="+p2+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p4="+p3+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p5="+p4+" WHERE Email='"+em+"' "); 

        } 
        if(n7>p2&&n7<p1){ 
         db.execSQL("UPDATE Usuarios SET p2="+n7+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p3="+p2+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p4="+p3+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p5="+p4+" WHERE Email='"+em+"' "); 

        } 
        if(n7>p3&&n7<p2){ 

         db.execSQL("UPDATE Usuarios SET p3="+n7+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p4="+p3+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p5="+p4+" WHERE Email='"+em+"' "); 

        } 
        if(n7>p4&&n7<p3){ 


         db.execSQL("UPDATE Usuarios SET p4="+n7+" WHERE Email='"+em+"' "); 
         db.execSQL("UPDATE Usuarios SET p5="+p4+" WHERE Email='"+em+"' "); 

        } 
        if(n7>p5&&n7<p4){ 


         db.execSQL("UPDATE Usuarios SET p5="+n7+" WHERE Email='"+em+"' "); 

        } 

      c.close(); 
       Intent intent2 = new Intent(Cinco.this, MainActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("PUNT", n7); 
        intent2.putExtras(b); 
        startActivity(intent2); 
     } 
    }); 

我做了同樣的光標在沒有錯誤MainActivity類別相同的,但它只是推杆的成績在textViews它沒有值插入

的分數正確地插入了表,但我總是得到「不幸的是,MyApp已經停止了。」 =( 任何想法? PD =這是我的第一個問題,所以要pattient,如果我做錯了=)

+0

很明顯,你正在訪問數組中沒有元素的第0個位置,這就是'ArrayIndexOutOfBoundException'。看看你的堆棧跟蹤發生在哪一行,或者在這裏發佈你的堆棧跟蹤,然後相應地改變你的邏輯。 –

回答

1

首先,總是發佈整個堆棧跟蹤。

其次,您試圖訪問沒有結果的遊標。這導致你崩潰。檢查moveToFirst的返回值。如果它返回false,則沒有結果並且不需要訪問它。

此外,從不寫入連接的SQL查詢以創建WHERE子句。始終使用綁定變量。使用連接會導致您冒SQL注入的風險,並且它會阻止db針對通用查詢進行優化。

+0

嘿,我檢查了c.moveToFirst的返回值,如果(c.moveToFirst)',然後插入命令。它執行那些命令所要求的動作,所以返回值必須是真的,任何想法?,我總是得到相同的錯誤=( – user3818614

相關問題