출처:http://arabiannight.tistory.com/entry/368

 

 

 

안드로이드에서는 DB에서 가져온 데이터를 쉽게 처리하기 위해서 Cursor 라는 인터페이스를 제공해 줍니다. Cursor는 기본적으로 DB에서 값을 가져와서 마치 실제 Table의 한 행(Row), 한 행(Row) 을 참조하는 것 처럼 사용 할 수 있게 해 줍니다. 개발자는 마치 그 행(Row) 을 가지고 행(Row)에 있는 데이터를 가져다가 쓰는 것 처럼 사용하면 되는 편의성을 제공받게 됩니다.


1) 기본적인 DB 필드 구조.



 

Cursor는 SQLiteDatabase 에서 얻어오 실제 DB 값을 가지고 마치 테이블의 행(Row)를 하나하나 이동하며 참조하는듯 Data를 처리해 줍니다. 실제 Cursor의 동작은 이렇게 동작한다고 생각하시면 됩니다.


2) Cursor의 동작 원리 : 행(Row) 참조



실제 Cursor가 행(Row)를 참조하기 때문에 Cursor의 위치를 바꿔주는 메서드들이 존재 합니다. 실제 자주 사용하는 메서드들 입니다.


 메서드 

 동작 

 Cursor.moveToFirst();

 Cursor를 제일 첫번째 행(Row)으로 이동 시킨다.

 Cursor.moveToNext();

 Cursor를 다음 행(Row)으로 이동 시킨다.

 Cursor.moveToPrevious();

 Cursor를 이전 행(Row)으로 이동 시킨다.
 Cursor.moveToPosition(position);

 Cursor를 해당 Position 행(Row)으로 이동 시킨다.

 Cursor.moveToLast();

 Cursor를 마지막 행(Row)으로 이동 시킨다.

 



2-1) Cursor의 동작 원리 : 행(Row) 이동



위에서 실제 Cursor의 동작 원리를 살펴 보았는데요. 이번에는 Cursor가 참조하고 있는 DB 테이블의 행(Row) Data를 얻어오는 방법에 대해 알아 보겠습니다.



 

 메서드 

 동작 

 Cursor.getInt(), Cursor.getString(),   Cursor.getLong(), Cursor.getBoolean().....

 DB 테이블의 실제 Data를 가지고 옵니다.

 Cursor.getColumnIndex(Streing columnName);

 DB 테이블의 해당 필드(컬럼) 이름을 얻어 옵니다.

 Cursor.getPosition();

 Cursor가 가리키고 있는 DB 테이블 행(Row) Position 을 얻어 옵니다.

 Cursor.getColumnName(int columnIndex);

 필드(컬럼) index의 해당하는 필드(컬럼) 이름을 얻어 옵니다.

 Cursor.getCount();

 커서가 참조 할 수 있는 해당 테이블의 행(Row)의 갯수를 얻어 옵니다.

 Cursor.getColumnNames();

 DB 테이블의 필드(컬럼) 명을 순서대로 배열로 얻어 옵니다.

 Cursor.getColumnCount();

 DB 테이블의 필드(컬럼) 갯수를 얻어 옵니다.

 

 



3) Cursor로 값 가져오기

포스팅에서 언급하는 필드와 컬럼은 같은 개념으로 보시면 됩니다.


3-1) Cursor.getInt(), Cursor.getString(),   Cursor.getLong(), Cursor.getBoolean().....



3-2) Cursor.getColumnIndex(Streing columnName);



3-3) Cursor.getPosition();



3-4) Cursor.getColumnName(int columnIndex);



3-5) Cursor.getCount();



3-6) Cursor.getColumnNames();



3-7) Cursor.getColumnCount();




이렇게 해서 Cursor의 실제 동작 방법에 대해 알아 보았는데요. 어떠신가요?ㅎㅎ 이해가 잘 되시나요? 저는 그림 편집하느라 좀 시간이 걸렸네요. ^^; ㅎㅎ 아무튼 열심히 봐주셔서 감사하고 다음번 포스팅에서는 실제 Cursor의 사용법에 대해 알아보는 시간을 가져 보겠습니다. 



감사합니다.

  1. 공부하는사람 2017.11.12 00:00

    좋은 글 감사합니다.

+ Recent posts