在Android中显示来自Cursor的数据的问题

时间:2011-06-28 13:47:14

标签: android sql sqlite cursor

运行我的应用程序时,我在LogCat中收到以下错误:

  

06-28 13:39:57.827:   ERROR / AndroidRuntime(10490):   java.lang.RuntimeException:无法   开始活动   ComponentInfo {random.test / random.test.ResultsActivity}:   android.database.CursorIndexOutOfBoundsException:   要求索引-1,大小为2

触发错误的代码:

myCursor.getString(0)

我已经检查了我的SQL查询,当我在SQLite数据库浏览器中运行它时它工作正常(我从我的模拟器中取出数据库,没有任何改动)。它返回1列,包含2行:

--------
| test |
--------
| asd1 |
--------
| asd2 |
--------

当我在游标上运行getColumnIndex(“test”)时,它返回'0'。所以我在这里完全没有想法,它说现有的专栏不存在?

3 个答案:

答案 0 :(得分:3)

在尝试使用之前,您可能需要致电moveToFirst() on the Cursor。此外,getColumnIndex(String)返回基于0的索引,因此如果它返回0,则它是有效列。 -1表示该列不存在。

答案 1 :(得分:2)

在尝试访问数据之前,您应该执行myCursor.moveToFirst()。

答案 2 :(得分:1)

getColumnIndex(“test”)只是让你知道列的索引。它没有说明行数...你可以从'n'列的表中得到0行。

因此,结果为0的getColumnIndex(“test”)表示您在位置0中有一列。

关于myCursor.getString(0),错误是因为您没有任何结果。 你把光标移动到第一个元素了吗?别忘了调用moveToFirst()...

希望这可以帮助你...