2017-01-02 1 views
-5

나는 안드로이드 스튜디오에서 자바 코드를 이해해야 만하지만 자바와 안드로이드에 익숙하지 않은 나는 질문이있다.커서 란 무엇이며 커서 (이 경우)는 무엇을합니까?

누구나 커서가 실제로 무엇인지 알고 있으며이 경우 정확하게 무엇을합니까? documentation에서

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

커서는 모든 데이터베이스의 2 차원 테이블을 나타내는 인터페이스입니다. SELECT 문을 사용하여 일부 데이터를 검색하려고하면 데이터베이스는 먼저 Cursor 객체를 만들고 참조를 반환합니다.

반환 된 참조의 포인터가 커서의 첫 번째 위치 이전에 호출 된 0 번째 위치를 가리키고 있으므로 커서에서 데이터를 다시 검색하려면 먼저 첫 번째 레코드로 이동해야합니다. moveToFirst를 사용해야합니다.

커서에서 moveToFirst() 메서드를 호출하면 커서 포인터가 첫 번째 위치로 이동합니다. 이제 첫 번째 레코드에있는 데이터에 액세스 할 수 있습니다.

위의 코드는 데이터를 읽으려고하고 있지만 일부 누락 된 정보가 있음을 보여줍니다.

+1

'커서 '가 아니라'커서 '입니다. 또한 '커서'는 클래스가 아니며 인터페이스입니다. – m0skit0

+0

수정 해 주셔서 감사합니다 –

+1

또한 커서 데이터는 데이터베이스에있을 필요는 없습니다. 단지 2 차원 데이터 테이블에 대한 인터페이스를 제공합니다. 데이터 소스는 any 일 수 있으며 부적절합니다. – m0skit0

-1

:

이 인터페이스는 데이터베이스 쿼리에 의해 반환 된 결과 집합 랜덤 읽기 - 쓰기 액세스를 제공합니다.

결과 집합 (데이터)이 데이터베이스의 것이 아니기 때문에이 설명이 완전히 정확하지는 않습니다 (ContentProvider 참조).

+5

대답이 본질적으로 문서에 대한 포인터 인 경우, 연구의 부족으로 질문에 답하지 않고 downvote 할 수도 있습니다. 그러한 나쁜 질문을하는 사람들을 피하기 위해 –

+0

@TimCastelijns 당신이 옳습니다. – m0skit0