Cursor.getColumnIndex()为存在的列返回-1

时间:2016-09-20 21:34:28

标签: android cursor android-sqlite android-cursor

我正在编写将我的应用数据库升级到新版本的代码。在升级时,我删除一个表并使用不同的模式(包括新列)重新创建它。当我尝试从这个新表中读取数据时,我创建了一个如下的游标:

Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_ALARMS, null);

当我尝试从新列读取数据时,cursor.getColumnIndex(NEW_COLUMN)返回-1,这意味着它不存在。由于新列包含在新架构中,因此不正确。有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

我不确定,但是我有一个问题,我的光标无法读取表格的所有信息(我刚创建的那些没有工作)我通过关闭光标并重新打开它来解决它尝试:)

答案 1 :(得分:0)

该列没有问题,您可以通过getColumnNames()上的getColumnCount()Cursor验证该内容。

缺少的是Cursor的索引,如rawQuery文档中所述,返回值为

  

一个Cursor对象,位于第一个条目之前。

因此,最初它无效,您需要在访问数据之前执行moveFirst()moveNext()