상세 컨텐츠

본문 제목

(안드로이드) 콘텐트벨류 클래스란? (ContentValues 클래스란?)

Android

by choiDev 2019. 1. 29. 10:24

본문

ContentValues란?

  이 클래스는 ContentResolver가 처리 할수 있는  값 집합을 저장하는데 사용됩니다.

  ContentResolver는 콘텐트 프로바이더(ContentProvider)와 비즈니스 로직의 중계자 역할을 하고 있습니다.

  ContentValues는 ContentResolver가 사용하는 데이터 운송 수단이라고 생각하시면 좋을 것 같습니다.



ContentValues 사용 순서

 1. 객체 생성 

 2. put메서드를 사용해서 (항목, 값)을 DB테이블 순서에 맞게 집어 넣습니다. 

 3. getContentResolver()를 통해 ContentResolver를 가져옵니다.

 4. ContentReseolver.insert()의 (URI & ContentValues)를 매개변수로 넣어줍니다.

ContentValues addRowValue = new ContentValues();

addRowValue.put("number", "200106054");
addRowValue.put("name", "홍길동");
addRowValue.put("department", "컴퓨터");
addRowValue.put("age", "18");
addRowValue.put("grade", 3);

getContentResolver().insert(Uri.parse(PROVIDER_URI), addRowValue);


 5. ContentResolver.insert()가 받은 ContentValues객체를 -> dbManager.insert()로 보내주며 중간 다리 역할을 합니다.

@Override
public Uri insert(Uri uri, ContentValues values) {
long rowid = dbManager.insert(values);
return null;
}


 6. getWritableDatabase()로 자신의 앱의 DB를 가져옵니다

 7. 가져온 DB에 ContentValue객체를 넣어 insert를 실행합니다.

 8. insert가 실행 된 이후로는 DB에 정상적으로 값이 저장 됩니다.

public long insert(ContentValues addRowValue){
return getWritableDatabase().insert(TABLE_STUDENTS,null,addRowValue);
}


위 순서를 간략하게 정리 하면

1. ContentValues 객체 선언 및 DB에 입력할 데이터 선언

2. ContentResolver.insert()를 실행시켜 ContentValues 객체를 전달

3. ContentValues객체값을 다시 dbManager에게 전달

4. dbManager가 ContentValues의 값을 갖고 DB에 insert문 실행


이상 이번 글은 간단하게 ContentValues가 무슨 역할을 하는지에 대해 아는 시간이였습니다.

혹시 ContentValues가 사용된 예제가 보고 싶으시다면~? 아래 링크를 타시고 예제를 보시면 될 것 같습니다.

https://choidev-1.tistory.com/56


이 글을 읽어 주시는 모든 분께 감사드리구요

혹시나 제 글이 너무 설명이 짧아서 난해하거나 이해가 가지 않는 부분이 있다면

Android 공식사이트에 있는 API문서를 참조하는 편이 좋다고 생각합니다.


만약 API문서를 읽지 못하시거나 영어가 두려운 분이시라면

구글에 API문서 읽는 법 이라고만 치셔도 방법이 나오니깐 겁먹지 말고 도전! 먼저 해보시는게 어떨까요?

실제로 요즘은 Chrome번역기도 잘되있고 왠만하면 다 이해할 정도로 번역을 해 줍니다.


잡설이 너무 길었네요 ^^

다들 좋은 하루 되세요~~~

관련글 더보기