0

我已经在数据库中插入了一些值,并使用从 database.insert 命令获得的数据集的 insertId 查询游标,但我没有得到 cursor.moveToFirst() 的功能,为什么我必须调用它?在调用它之后,我能够在某个对象中获取插入的值!

 long insertId = database.insert(MySQLiteHelper.TABLE_NAME, null,
        values);

   Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME,
        allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
        null, null, null);
    cursor.moveToFirst();
 Message newMessage = cursorToMessage(cursor);
    cursor.close();
4

2 回答 2

2

光标指向您的数据。起初它没有指向任何地方,所以这就是你必须打电话的原因moveToFirst()。如果你会得到多个结果,你可以moveToNext()在 while 循环中调用,只要有结果,循环就会继续。

于 2013-09-09T18:27:52.950 回答
1

这是遍历游标可能满足的所有可能值的一种方法,每个步骤正在解释:

Cursor cursor = //Reference to whatever cursor you have...
        if(cursor != null && !cursor.isAfterLast() && !cursor.isClosed()){
                //this method positions the cursor always in the first item, since there's not warranty is pointing to it...
            cursor.moveToFirst();
            do{
                //Here you have the chance to create your transfer data object and populat it with the column values...
                String column = cursor.getString(cursor.getColumnIndex("columnName"));
            }
                //Here we go to the next element in cursor IF any...
            while(cursor.moveToNext());
            cursor.close();
        }

希望这可以帮助。

问候!

于 2013-09-09T18:34:48.493 回答