2010-06-23 34 views
9

我正在尝试自己调试问题。以后可能将它张贴如果我失败了;-)游标中的输出值为logcat? - Android

我的logcat日志指出"android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 2"

我想用log.v("desc", cursor)显示什么光标的回报。有没有办法从它指定一个值,如光标[0]?

+0

“我想用log.v(”递减”,光标)显示什么光标的回报。有没有从中指定像光标值的方法[ 0]?“ 我想知道你在这句话中的含义?你想看到整行号0(行0中所有列的值)? – Gawcio 2010-06-23 20:16:51

回答

2

你在光标上叫做moveToFirst()吗?

+0

谢谢,这解决了我的问题。现在到下一个,耶!你是个明星! – Amit 2010-06-23 20:09:00

0

或者,如果你正在寻找光标所在在一个特定时间点,请拨打Cursor.getPosition()

看一看的Cursor API

它通常很罗嗦,但有时它有帮助。

7

如果您打算按行,你可以使用如下代码来写光标的内容到logcat的行:

if (cursor.moveToFirst()) { 
    do { 
     StringBuilder sb = new StringBuilder(); 
     int columnsQty = cursor.getColumnCount(); 
     for (int idx=0; idx<columnsQty; ++idx) { 
      sb.append(cursor.getString(idx)); 
      if (idx < columnsQty - 1) 
       sb.append("; "); 
     } 
     Log.v(TAG, String.format("Row: %d, Values: %s", cursor.getPosition(), 
      sb.toString())); 
    } while (cursor.moveToNext()); 
} 
+0

如果列不是字符串,它可能是int double? – Sumit 2017-09-30 19:15:12

56

Android已经提供了一个特定的类只是为了调试光标。它被称为DatabaseUtils

调用方法dumpCursorToString()查看游标的内容。

这个帮助程序遍历并打印出游标的内容,并将游标返回到原来的位置,这样它就不会弄乱你的迭代逻辑。

35

使用在此之前cursor.moveToFirst()

Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(cursor)) 
+0

+ import android.database.DatabaseUtils; – Kozuch 2017-11-22 18:52:52