2013-10-10 53 views
0

我一直在努力解決這個可惜的問題幾個小時了。我在我的應用程序中使用了很多其他遊標方法,這些遊標方法都是作爲一種魅力工作,但是這一直是一個真正難以解決的問題。cursorIndexOutOfBounds錯誤即使使用moveToFirst()並檢查光標的值

public int getCategoryCode(String category){ 
    int d=0; 
    Cursor cg=database.query("categoryTable", null, "category_name='"+category+"'", null, null, null, null); 
     cg.moveToFirst(); 
    Log.d("success", String.valueOf(cg.getColumnIndex("_id"))); 

    Log.d("success", String.valueOf(cg.getCount())); 

    cg.getInt(cg.getColumnIndex("_id")); 
    return d; 

當我嘗試檢索保存在「_id」列中的'整數'時,程序返回一個異常。我檢查了「id」列中存在結果,因爲cg.getColumnIndex()在logcat中返回0。請幫忙!!

+0

您不會像這樣調用moveToFirst()。你做'if(moveToFirst())'。 – tolgap

回答

0

試試這個(編者)!!:

 public int getCategoryCode(String category){ 
     int d=0; 
     Cursor cg= database.rawQuery("SELECT _id FROM categoryTable WHERE category_name = '"+category+"' ",null); 

     if(cg.moveToFirst()){ 
      if(!mCursorActual.isNull(cg.getColumnIndex("_id"))){ 
       d = cg.getInt(cg.getColumnIndex("_id")); 

      } else { 
       d = 0; 
      } 
      cg.close(); 

       return d; 
     } 
    } 
0

嘗試查看:

if((cg!= null) && (cg.getCount() > 0)){ 
    cg.moveToFirst(); 
    //DO YOUR STUFF 
} 
0

使用下面的代碼,

cursor.moveToFirst(); 
if(cursor.isAfterLast() == false) { 

    // Your logic goes here 
} 

您也可以肯定的是有數據在你的表中,使用斷點來確保你的查詢是正確的,一旦查詢完成,看看光標對象。