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

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

问题描述:

我必须从android工作室了解一些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; 

    } 
+4

您添加了android-cursor标签,但未能读取其信息? –

+1

你知道Google吗? –

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

返回的引用的指针指向第0个位置,该位置在光标的第一个位置之前被调用,所以当您想要从光标中取回数据时,必须先移动到第一条记录,必须使用moveToFirst

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

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

+1

'光标',而不是'CURSOR'。 'Cursor'不是一个类,它是一个接口。 – m0skit0

+0

感谢您的更正 –

+1

另外游标数据不一定来自数据库。它只是提供了一个2维数据表的接口。数据源可以是任何数据源,并且不相关。 – m0skit0

documentation

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

请注意,由于结果集(数据)不一定来自数据库(参见ContentProvider),所以此描述并不完全准确。

+5

如果你的答案基本上是一个指向文档的指针,你可能不会回答并且因缺乏研究而降低问题的质量,以避免人们提出这样的问题 –

+0

@TimCastelijns你是对的先生。 – m0skit0