2014-07-07 39 views
0

即時嘗試做一個方法,從數據庫中返回值,我得到CursorIndexOutOfBounds: (第94行是:String count = c.getString(1 );)遊標索引超出邊界,試圖從數據庫中獲取值

public String getCount() { 
     // TODO Auto-generated method stub 
     String[] columns = new String[] { KEY_ROWID, KEY_COUNT }; 

     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=1",null, null, null, null); 

     if (c != null) { 
      c.moveToFirst(); 
      String count = c.getString(1); 
      return count; 
     } 
     return null; 
    } 

logcat的:

07-07 19:51:53.408: E/AndroidRuntime(27923): FATAL EXCEPTION: main 
07-07 19:51:53.408: E/AndroidRuntime(27923): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424) 
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 
07-07 19:51:53.408: E/AndroidRuntime(27923): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 
07-07 19:51:53.408: E/AndroidRuntime(27923): at com.example.fartsound.MyDataBase.getCount(MyDataBase.java:94) 

回答

0

在if語句中移動c.moveToFirst()。如果返回false,那麼光標是空的,會得到這個錯誤

if (c != null && c.moveToFirst()) 
+0

即時得到空,這是什麼意思的值(該方法返回null) – Pachu

+0

因爲?你返回null,這意味着你的光標是空的 – tyczj

+0

這意味着表是空的? – Pachu

0

光標從 '0' 開始使用此:

String count = c.getString(0); 
+0

試了一下,仍然得到了同樣的事情,再說了,我想第二列 – Pachu

0

moveToFirst的文獻()方法:

公共抽象布爾moveToFirst()將光標移動到第一行。如果光標爲空,則此方法將返回false。

返回移動是否成功。

所以你的moveToFirst調用失敗(因爲cusrsor有0個元素),這就是崩潰的原因。

這樣做:

if(c != null && c.moveToFirst()) { 
     String count = c.getString(0); 
     return count; 
} 
相關問題