Android:SQLite数据库 - 添加和游标

时间:2012-06-22 18:52:23

标签: android database cursor

我试图了解游标是如何工作的,而我并不了解此代码的一部分 - (取消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()方法吗?

2 个答案:

答案 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():"将光标移动到第一行。"