2013-01-21 88 views
0

我想從我的數據庫中選擇某些行,但因爲我一直在索引出界,我決定現在刪除WHERE部分,只是得到所有的數據。 我已經使用了android教程http://developer.android.com/training/basics/data-storage/databases.html#DbHelper,爲了創建這個方法。但是當我試圖從查詢中獲取值時,我得到CursorIndexOutOfBoundsException。Android的SQLite的db.query導致CursorIndexOutOfBoundsException

我的代碼:

String getSite() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
      //get all data for now 
    Cursor c = db.query(
     TABLE_NAME, // The table to query 
     null,        // The columns to return 
     null,        // The columns for the WHERE clause 
     null,       // The values for the WHERE clause 
     null,          // don't group the rows 
     null,          // don't filter by row groups 
     null         // don't sort 
     ); 
    c.moveToFirst(); 
     String test= c.getString(0); 
    c.close(); 
    return test;} 
} 

的錯誤: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 6

當我檢查c.count()我有6,所以我不知道爲什麼,我指的是一個指數可能越界

謝謝

+3

雖然你應該經常檢查moveToFirst的'()'的返回值,這個代碼不應該拋出此異常。你確定這是錯誤發生的地方嗎? – Sam

+0

同意@Sam - 我看不出任何錯誤的代碼。 – Squonk

+0

是的,我是積極的。添加此我的代碼解決了這個問題,但我不知道爲什麼 '如果(c.moveToFirst()){{做' \t'的System.out.println(c.getString(0));' \t \t \t'} while(c.moveToNext());' \t \t \t \t'}' – Quantico

回答

0

如果它沒有移動,你的光標是空的。

嘗試

if (c.moveToFirst()) { 
    String test= c.getString(0); 
    // or String test= c.getString(c.getColumnIndex("column_name")); 
} 
+0

是的,我做了什麼,我不知道爲什麼它解決了這個問題 – Quantico

相關問題