什么是光标,它做了什么(在这种情况下)?

时间:2017-01-02 16:14:14

标签: java android android-cursor

我必须从android studio中了解一些java代码,但由于我是Java和android的新手,我有一个问题。

任何人都知道Cursor究竟是什么,在这种情况下它究竟做了什么?

private Movie cursorToMovie (Cursor cursor)
    {
        Movie movie = new Movie();
        movie.setId(cursor.getInt(0));
        movie.setName(cursor.getString(1));
        movie.setGenre(cursor.getString(2));
        movie.setYear(cursor.getInt(3));
        movie.setSynopsis(cursor.getString(4));

        return movie;
    }


    public List<Movie> getAllMovies()
    {
        open();

        List<Movie> movieList = new ArrayList<>();

        Cursor cursor = db.query(Movie.TABLE_NAME, MovieAllColumns, null, null, null, null, null);
        cursor.moveToFirst();

        while (!cursor.isAfterLast())
        {
            Movie movie = cursorToMovie(cursor);
            movieList.add(movie);
            cursor.moveToNext();
        }

        cursor.close();
        close();
        return movieList;

    }

2 个答案:

答案 0 :(得分:1)

Cursor是一个表示任何数据库的二维表的接口。当您尝试使用SELECT语句检索某些数据时,数据库将首先创建一个Cursor对象并将其引用返回给您。

此返回引用的指针指向第0个位置,否则在Cursor的第一个位置之前调用该位置,因此当您想要从光标中检索数据时,您必须先移动到第一个记录,这样我们才能使用moveToFirst

当您在Cursor上调用moveToFirst()方法时,它会将光标指针指向第一个位置。现在您可以访问第一条记录中的数据

上面的代码显示您正在尝试读取数据但有一些缺失的信息。

答案 1 :(得分:-1)

来自documentation

  

此接口提供对结果集的随机读写访问   由数据库查询返回。

请注意,此描述并不完全准确,因为结果集(数据)不必来自数据库(请参阅ContentProvider)。