Android getColumName和getColumnIndex

时间:2010-12-22 17:32:54

标签: android sqlite

我是一个Android新手,我的光标有问题。我无法使用以下方式访问数据: cursor.get(cursor.getColumnIndex(columnName));

我尝试使用以下代码来测试错误:

while (cursor.moveToNext()) {
        int x = 2;
        Log.i("MyDebug", "Index: " + x);
        Log.i("MyDebug", "Name: " + cursor.getColumnName(x));
        Log.i("MyDebug", "Index again: " + cursor.getColumnIndex(cursor.getColumnName(x)));
    }

调试监视器的结果:

Index: 2 
Name: mainMenu.title 
Index again: -1

“索引再次”的结果不应该是2吗?我做错了什么?

2 个答案:

答案 0 :(得分:3)

cursor.getColumnIndex()需要列的名称,而不是表的名称:

cursor.getColumnIndex("mainMenu.title"); // -1
cursor.getColumnIndex("title"); // 2

答案 1 :(得分:0)

我有一个类似的问题并通过在我相当复杂的查询中提供我的列别名来解决它,然后我使用这些别名作为参考,例如: 我的查询的开始:

SELECT lith.drill_id, lith.depth_from,
...
...

cursor.getColumnIndex("depth_from") gave -1

然后我添加了列别名:

SELECT lith.drill_id AS drill_id, lith.depth_from as depth_from,
...
...

cursor.getColumnIndex("depth_from")然后给出正确的值。