2012-05-29 3 views
1

getPage를 사용하려고하면 커서를 사용하여 SQLite 쿼리를 수행 할 때 문제가 발생합니다. android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 오류가 발생합니다. 커서에 문제가 있습니까? cursor.getColumnCount()를 수행하면 올바른 결과를 얻고 행이 있으므로 문제가되지 않습니다. 오류의 원인은 무엇입니까? 미리 감사드립니다.Android SQLite가 CursorIndexOutOfBoundsException을 받고 있습니다.

public class DBHandler extends SQLiteOpenHelper { 
private static final int DATABASE_VERSION = 3; 

// Database Name 
private static final String DATABASE_NAME = "pagesManager"; 

// Pages table name 
private static final String TABLE_PAGES = "pages"; 
// Pages Table Columns names 
private static final String PAGES_KEY_ID = "id"; 
private static final String PAGES_KEY_NAME = "pageName"; 
private static final String PAGES_KEY_DATE = "lastDate"; 
private static final String PAGES_KEY_PAGE = "pageUrl"; 
@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_PAGES_TABLE = "CREATE TABLE " + TABLE_PAGES + "(" 
      + PAGES_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + PAGES_KEY_NAME + " TEXT,"+ PAGES_KEY_DATE + 
      " TEXT," + PAGES_KEY_PAGE + " TEXT" +")"; 
    db.execSQL(CREATE_PAGES_TABLE); 
} 

    public PageListItem getPage(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.query(TABLE_PAGES, new String[] { PAGES_KEY_ID, PAGES_KEY_NAME, PAGES_KEY_DATE, PAGES_KEY_PAGE }, PAGES_KEY_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, null); 
    if (cursor != null) 
     if(cursor.moveToFirst()) { 
      System.out.println("Cursor no es nulo"); 
     } 
    PageListItem page = new PageListItem(cursor.getString(1),cursor.getString(2), cursor.getString(3),Integer.parseInt(cursor.getString(0))); 
    cursor.close(); 
    return page; 
} 
} 

답변

1

잘못된 ID를 사용하여 getPage()가 찾을 수 없습니다.

+0

질문을 닫으려면이 대답을 수락해야합니다. –

+0

나는 2 일 동안 기다려야한다고 말합니다. 어쨌든 알림을 주셔서 감사합니다. – Lautaro

관련 문제