콘텐트 프로바이더 (ContentProvider) Uri란?
사실 ContentProvider를 이용해야 할 ContentResolver 앱에서 ContentProvider 내부의 상세한 DB 구조를 알 수 없다.
그래서 ContentResolver측은 ContentProvider가 제공한 Uri를 가지고 DB를 간단하게 접근이 가능하도록 기능을 제공한다.
- query문으로 표현하고 싶은 내용
ex) 학생관리 프로바이더에서 학번이 200106054인 학생 성적을 보여주세요.
위의 내용을 Uri로 표현하면 아래와 같다.
ex) content://학생관리프로바이더 주소/학생/성적/학번/#
- #은 정수, *은 문자열로 자유롭게 변경할 수 있는 약속된 기호이다.
Uri 해석만 가능하더라도 어떤 내용이 결과로 전달될지 예상이 가능합니다.
자 이제는 안드로이드에서 공식적으로 권장하는 콘텐트 프로바이더 Uri형식을 살펴 보겠습니다.
[안드로이드 권장 Uri형식]
자 그럼 위 그림 처럼 고정 URI는 항상 변경이 없는 URI니깐
사용자 정의 영역의 Uri를 만드는 예제를 아래에 보여드리겠습니다.
일단 아래와 같은 테이블이 있다고 가정하겠습니다.
[학생테이블]
ID |
학번 |
성명 |
학과 |
학년 |
1 |
200106054 |
홍길동 |
컴퓨터 |
3 |
2 |
200106055 |
김호동 |
디자인 |
4 |
3 |
200106056 |
박길동 |
영문 |
2 |
4 |
200106057 |
이길도 |
신문방송 |
3 |
5 |
200106058 |
최길동 |
의상디자인 |
1 |
위 표의 DB 내용에서 세가지 경우의 데이터를 가져올 때 사용자 정의 영역의 Uri를 어떻게 표현하는지 살펴 보겠습니다.
1. 학생 테이블 전체를 불러오는 Uri : 학생
2. 학생 테이블에서 id가 3인 학생 Uri : 학생/3
3. 학생 테이블에서 3학년 중 이름이 홍길동인 학생 Uri : 학생/학년/3/이름/홍길동
생각보다 Uri를 작성하는 규칙이 어렵진 않으시죠?
이번 글은 여기서 끝입니다.
항상 제 부족한 글을 읽어 주셔서 감사합니다.
아직은 필력이 부족해서 좋은 글을 못쓰지만 다들 이해할 수 있는 그런 글을 쓰도록 노력하겠습니다.
혹시 URI를 사용하는 예제가 보고 싶으시다면
아래의 링크를 통해 콘텐트 프로바이더 예제와 함께 Uri의 구조도 살펴 보세요~
https://choidev-1.tistory.com/56
다들 좋은 하루 되셔요~~~~~!! ^^
(안드로이드) 콘텐트 프로바이더 Call 인터페이스 (ContentProvider Call Interface) (1) | 2019.01.29 |
---|---|
(안드로이드) 콘텐트 프로바이더 UriMatcher클래스란? (ContentProvider UriMatcher클래스란?) (0) | 2019.01.29 |
(안드로이드) 콘텐트벨류 클래스란? (ContentValues 클래스란?) (0) | 2019.01.29 |
(안드로이드) 콘텐트 프로바이더(ConentProvider)를 학생 DB 예제 (ContentProvider) (2) | 2019.01.28 |
(안드로이드) 콘텐츠 프로바이더 (Content Provider) (0) | 2019.01.28 |