我正在编写将我的应用数据库升级到新版本的代码。在升级时,我删除一个表并使用不同的模式(包括新列)重新创建它。当我尝试从这个新表中读取数据时,我创建了一个如下的游标:
Cursor cursor = database.rawQuery("SELECT * FROM " + TABLE_ALARMS, null);
当我尝试从新列读取数据时,cursor.getColumnIndex(NEW_COLUMN)返回-1,这意味着它不存在。由于新列包含在新架构中,因此不正确。有谁知道为什么会这样?
答案 0 :(得分:0)
我不确定,但是我有一个问题,我的光标无法读取表格的所有信息(我刚创建的那些没有工作)我通过关闭光标并重新打开它来解决它尝试:)
答案 1 :(得分:0)
该列没有问题,您可以通过getColumnNames()
上的getColumnCount()
或Cursor
验证该内容。
缺少的是Cursor
的索引,如rawQuery文档中所述,返回值为
一个Cursor对象,位于第一个条目之前。
因此,最初它无效,您需要在访问数据之前执行moveFirst()
或moveNext()
。