2014-07-14 43 views
-1

我想從數據庫中讀取數據,並停止應用程序。 我有這樣的記錄:通過光標獲取查詢停止應用程序

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 
07-14 06:43:00.716: E/AndroidRuntime(2604):  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426) 

這是方法:

public Cursor getDetails(){ 

    SQLiteDatabase db = helper.getReadableDatabase(); 
    Cursor cursor; 
    cursor = db.query(TABLE_NAME, new String[] {EMAIL,PASSWORD}, null, null, null, null, null); 


    return cursor; 

} 

這是主要的活動:

cursor = handler.getDetails(); 
      email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL)); 

什麼想法? 謝謝

回答

1

如果您正在訪問來自Cursor對象的數據,則必須定位Cursor對象。

實際上,您必須將Cursor定位到第一行,然後才能嘗試從中訪問數據。

放線

cursor.moveToFirst(); 

email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL)); 

即之前重寫你的活動代碼

cursor = handler.getDetails(); 
if (cursor != null && cursor.getCount() > 0) { 
    cursor.moveToFirst(); 
    email_by_user = cursor.getString(cursor.getColumnIndex(EMAIL)); 
}