2014-12-30 42 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但不清除旧表:-) –

相关问题