2017-01-02 3 views
-5

Мне нужно понять код java от студии android, но поскольку я новичок в Java и Android, у меня есть вопрос.Что такое курсор и что он делает (в данном случае)?

Кто-нибудь знает, что такое Курсор, и что он делает именно в этом случае?

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, но не смогли прочитать его информацию? –

+1

Вы знаете Google? –

ответ

0

Курсор - это интерфейс, который представляет собой двумерную таблицу любой базы данных. Когда вы пытаетесь получить некоторые данные с помощью инструкции SELECT, база данных сначала создаст объект Cursor и вернет ссылку на вас.

Указатель этой возвращенной ссылки указывает на 0-е место, которое иначе вызывается как перед первым местоположением курсора, поэтому, когда вы хотите извлечь данные из курсора, вам нужно сначала перейти к первой записи, чтобы мы необходимо использовать moveToFirst

Когда вы вызываете метод moveToFirst() на курсор, он берет указатель курсора в первое место. Теперь вы можете получить доступ к данным, имеющимся в первой записи.

Приведенный выше код показывает, что вы пытаетесь прочитать данные, но есть некоторая недостающая информация.

+1

'Курсор', а не' CURSOR'. Также 'Cursor' не является классом, это интерфейс. – m0skit0

+0

Благодарим за исправление –

+1

Также данные курсора не обязательно должны быть из базы данных. Он просто предоставляет интерфейс для двумерной таблицы данных. Источник данных может быть любым, и это не имеет значения. – m0skit0

-1

Из documentation:

Этот интерфейс обеспечивает произвольный доступ для чтения и записи в наборе результатов возвращенного запроса к базе данных.

Обратите внимание, что это описание не является точным, поскольку набор результатов (данных) не обязательно должен быть из базы данных (см. ContentProvider).

+5

Если ваш ответ по существу является указателем на документацию, вы можете также не отвечать и не учитывать вопрос из-за отсутствия исследований, чтобы люди не задавали такие плохие вопросы. –

+0

@TimCastelijns. Вы правы, сэр. – m0skit0

Смежные вопросы