使用cursor.getInt()的CursorIndexOutOfBoundsException

时间:2015-04-02 14:23:41

标签: android sqlite cursor

这是我的代码:

 Log.d("MYTAG", "random number -->" + randomNumber);
 idRandomCards[i] = cursorTypeZero.getInt(randomNumber);

这是错误日志:

7620-7620/package D/MYTAG﹕ random number -->94
04-02 16:06:51.804    7620-7620/package D/AndroidRuntime﹕ Shutting down VM
04-02 16:06:51.804    7620-7620/package W/dalvikvm﹕ threadid=1: thread exiting    with uncaught exception (group=0x41bafda0)
04-02 16:06:51.854    7620-7620/package D/dalvikvm﹕ GC_FOR_ALLOC freed 1283K,     45% free 9237K/16608K, paused 42ms, total 46ms
04-02 16:06:51.864    7620-7620/package E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: package, PID: 7620
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 206
        at ecc

正如您将看到的,在这种情况下,随机数的值为94. cursor.getCount()= 206。

为什么我有这个例外?

我没有'想使用cursor.getColumnIndexOrThrow()方法,因为我需要一个随机行。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试使用

 cursorTypeZero.moveToPosition(position) 
在getInt()方法之前

。 在@blackbelt回答之后编辑..

答案 1 :(得分:0)

因为列不会退出。如果我理解正确的话。您想将光标移动到随机位置,并从该行读取数据:

使用

 cursor.moveToPosition(randomNumber);

然后从正确的列中读取,使用getColumnIndexOrThrow读取列的索引。您还应该检查randomNumber是否在0cursor.getCount() - 1

之间