2017-01-02 205 views
-5

我必須從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嗎? –

回答

0

光標是一個接口,它表示任何數據庫的二維表。當您嘗試使用SELECT語句檢索某些數據時,數據庫將首先創建一個Cursor對象並將其引用返回給您。

返回的引用的指針指向第0個位置,該位置在光標的第一個位置之前被調用,所以當您想要從光標中取回數據時,必須先移動到第一條記錄,必須使用moveToFirst

當您在Cursor上調用moveToFirst()方法時,它會將光標指針指向第一個位置。現在您可以訪問第一條記錄中的數據

上面的代碼顯示您正在嘗試讀取數據,但有一些缺失信息。

+1

'光標',而不是'CURSOR'。 'Cursor'不是一個類,它是一個接口。 – m0skit0

+0

感謝您的更正 –

+1

另外遊標數據不一定來自數據庫。它只是提供了一個2維數據表的接口。數據源可以是任何數據源,並且不相關。 – m0skit0

-1

documentation

該接口提供對結果集 通過數據庫查詢返回的隨機讀寫訪問。

請注意,由於結果集(數據)不一定來自數據庫(參見ContentProvider),所以此描述並不完全準確。

+5

如果你的答案基本上是一個指向文檔的指針,你可能不會回答並且因缺乏研究而降低問題的質量,以避免人們提出這樣的問題 –

+0

@TimCastelijns你是對的先生。 – m0skit0

相關問題