2014-12-30 40 views
0

我有一個數據庫,從表中獲取數據的sqliteHelper,我想從這個類建立一個對象,並讀取數據庫,但我得到這個錯誤:錯誤:確保光標正確初始化的Android

Couldn't read row 0, col -1 from CursorWindow,make sure cursor is initialized correctly android

這是我在sqliteHelper類中的get函數:

public Vector<NoteTableItem> getAllNote() { 
    Vector<NoteTableItem> list = new Vector<NoteTableItem>(); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String selectQuery = "SELECT * FROM " + NOTE_TABLE_NAME ; 

    Cursor c = db.rawQuery(selectQuery, null); 
    //startManagingCursor(c); 
    c.moveToFirst(); 
    if (c.getCount() > 0) 
    do { 
    NoteTableItem item = new NoteTableItem(); 
    item.ID=c.getInt(c.getColumnIndex(KEY_ID)); 
    item.title=c.getString(c.getColumnIndex(KEY_TITLE)); 
    item.text=c.getString(c.getColumnIndex(KEY_TEXT)); 
    item.photoAddress=c.getString(c.getColumnIndex(KEY_PHOTOADDRESS)); 
    item.year=c.getInt(c.getColumnIndex(KEY_YEAR)); 
    item.mounth=c.getInt(c.getColumnIndex(KEY_MOUNTH)); 
    item.day=c.getInt(c.getColumnIndex(KEY_DAY)); 
    item.hour=c.getInt(c.getColumnIndex(KEY_HOUR)); 
    item.minute=c.getInt(c.getColumnIndex(KEY_MINUTE)); 
    item.checked=c.getInt(c.getColumnIndex(KEY_CHECKED)); 
    list.add(item); 
    } while (c.moveToNext()); 
    db.close(); 
    return list; 
    } 

我只是想創建這個類的一個對象。

private static final String CREATE_NOTE_TABLE_NAME = " CREATE TABLE IF NOT EXISTS " 
+ NOTE_TABLE_NAME 
+ "(" 
+ KEY_ID 
+ " INTEGER , " 
+ KEY_TITLE 
+ " TEXT , " 
+ KEY_TEXT 
+ " TEXT , " 
+ KEY_PHOTOADDRESS 
+ " TEXT , " 
+ KEY_YEAR 
+ " INTEGER , " 
+ KEY_MOUNTH 
+ " INTEGER , " 
+ KEY_DAY 
+ " INTEGER , " 
+ KEY_HOUR 
+ " INTEGER , " 
+ KEY_MINUTE 
+ " INTEGER , " 
+ KEY_CHECKED 
+ " INTEGER ) ; "; 

回答

0

你的光標不包含所有你認爲列和getColumnIndex()返回-1表示「未找到」的列中的至少一個。

如果您認爲列應該在那裏,請卸載您的應用程序以擺脫可能的舊數據庫文件。

+0

如果您需要幫助解決它,請發佈數據庫模式(CREATE TABLE)。 – laalto

+0

我可以使用此代碼已經,但現在這是行不通的! –

+0

我undrestand我的錯誤,我編輯table notetableitem但不清除舊錶:-) –

相關問題