我试图了解游标是如何工作的,而我并不了解此代码的一部分 - (取消http://www.vogella.com/articles/AndroidSQLite/article.html)
public Comment createComment(String comment) {
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_COMMENT, comment);
long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null,
values);
Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
Comment newComment = cursorToComment(cursor);
cursor.close();
return newComment;
}
有人可以解释一下这里发生了什么吗? 这就是我认为正在进行的事情 - 他正在将值插入名为comment的列下的表中。然后,他进行查询,将光标设置为他在表格中添加注释的位置。
然后我对他为什么做cursor.moveToFirst()感到困惑。光标是否指向他刚刚添加的当前评论?我以为他正试图将他刚刚插入表中的评论返回到表中,所以他不能删除moveToFirst()方法吗?
答案 0 :(得分:1)
Cursor cursor = database.query(MySQLiteHelper.TABLE_COMMENTS,
allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
null, null, null);
返回结果是游标对象。
cursor.moveToFirst();
确保您指向光标对象中的第一个元素(或)光标不为空。
Comment newComment = cursorToComment(cursor);
调用另一个方法来遍历游标并在方法内执行逻辑编码,返回Comment
个对象。
cursor.close();
关闭光标,以便符合条件,GC和memeory将是免费的。
return newComment;
将评论对象返回给调用者。
答案 1 :(得分:0)
来自http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
的文档query返回:"一个Cursor对象,位于第一个条目之前。"
然后,http://developer.android.com/reference/android/database/Cursor.html
说moveToFirst():"将光标移动到第一行。"