错误:确保游标正确初始化android

时间:2014-12-30 07:00:17

标签: android sqlite

我有一个sqliteHelper从数据库中的表中获取数据,我想从这个类构建一个对象并读取数据库,但我得到了这个错误:

  

无法从CursorWindow读取第0行,col -1,确保游标正确初始化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   ) ; ";

1 个答案:

答案 0 :(得分:0)

您的光标不包含您认为的所有列,并且getColumnIndex()返回-1以指示至少其中一列的“未找到”。

如果您认为列应该在那里,请卸载您的应用以删除可能的旧数据库文件。