我想了解我看到的一段代码中的一行:
public Cursor fetchMessageByMessageId(String msgId) {
Cursor mCursor =
mDb.query(true, DATABASE_MESSAGES_TABLE, new String[] { KEY_ROWID,
KEY_CONVERSATION_ID, KEY_MSG_ID, KEY_TITLE, KEY_BODY,
KEY_IS_REPLY, KEY_MEDIA_LOC, KEY_URL, KEY_TIMESTAMP },
KEY_MSG_ID + "='" + msgId + "'", null, null, null, null, null);
**if (mCursor != null) {
mCursor.moveToFirst();
}**
return mCursor;
}
**
之间的以下代码行这条线是否必要?今天我花了2个小时进行调试,找出当我打电话给
时我的数据丢失的原因while(mCursor.moveTonext())
使用光标抓取一些数据,最后总是丢失第一个数据。所以我查看了代码的其他部分并意识到我将整个光标转移到适配器中,因此上面的粗线无论如何都没有效果。删除这些代码后,一切都很好!
简而言之,如果我只想要一个结果为1或者很多的游标,是否需要调用上面的粗体语句?谢谢!
答案 0 :(得分:0)
基本上,当你拨打query()
时,你会得到一组行。最初,光标将指向任何内容。如果您拨打mCursor.moveToNext()
或mCursor.moveToFirst()
,则需要指向第一行。对mCursor.moveToNext()
的额外调用会将光标移动到下一个元组。
简而言之,只有在需要从下一行(如果存在)获取信息时才调用mCursor.moveToNext()
。