마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 sqlite 코드 질문

0 추천

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에 있는 각 컬럼속 데이터를 가져오는데 저 값으로 어떻게 데이터를 가져와야 하는건지 모르겠습니다. 

 

다른 예제들도 많은데 이왕이면 안드로이드에서  제시한 예제가 아무래도 좋지 않을까  싶어서 해보려는데    감이 안오네요..

브루스웨인 (8,580 포인트) 님이 2020년 3월 31일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...