https://developer.android.com/training/data-storage/sqlite?hl=ko#ReadDbRow
위 페이지 예제를 참고하고 있습니다
데이터를 불러올 때 아래와 같이 하라는데요
List itemIds = new ArrayList<>();
while(cursor.moveToNext()) {
long itemId = cursor.getLong(
cursor.getColumnIndexOrThrow(FeedEntry._ID));
itemIds.add(itemId);
}
cursor.close();
위 코드를 잘 이해를 못하겠습니다.
cursor.moveToNext() 이거는 1행,2행,3행 이런식으로 넘어가는거고
itemId를 가져오는데 corsor.getColumnIndexOrThrow 이거는 특정 필드의 인덱스 값을 반환하는 걸로 알고 있습니다. 그럼 즉 FeedEntry._ID 컬럼 즉 데이터의 고유번호를 가져오는거 아닌가요?
그런데 테이블 구조가
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + FeedEntry.TABLE_NAME + " (" +
FeedEntry._ID + " INTEGER PRIMARY KEY," +
FeedEntry.COLUMN_NAME_TITLE + " TEXT," +
FeedEntry.COLUMN_NAME_SUBTITLE + " TEXT)";
이렇게 되어있으면 _ID는 INTEGER 형식으로 되어있을테고
cursor.getColumnIndexOrThrow(FeedEntry._ID) 를 getLong으로 또 커서에서 가져온 걸 itemId에 넣는건데 이렇게 하는 이유가 뭔가요?
for(int i = 0; i< itemIds.size(); i++)
System.out.println("itemid : "+itemIds.get(i));
이렇게 찍어보면
itemid : 206
itemid : 311
itemid : 416
itemid : 521
itemid : 626
itemid : 731
itemid : 836
이런 값들이 나오는데요.
제가 하고 싶은 건 DB에 있는 각 컬럼속 데이터를 가져오는데 저 값으로 어떻게 데이터를 가져와야 하는건지 모르겠습니다.
다른 예제들도 많은데 이왕이면 안드로이드에서 제시한 예제가 아무래도 좋지 않을까 싶어서 해보려는데 감이 안오네요..