1. SQLite Database๋ SQLite OpenHelper ํด๋์ค๋ฅผ ์์๋ฐ์ DBhelper๋ฅผ ํตํด ํ ์ด๋ธ์ ๋ง๋ค์ด ์์ฑํ๋ค.
*์ด๋ ํ ์ด๋ธ์ ์ฌ์ฉ๋ ํ ์ด๋ธ๋ช , column๋ช ๋ค์ Constant Class๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๋ค.
SQLite OpenHelper Public Methods
- abstract void onCreate (SQLiteDatabase db)
: ํ ์ด๋ธ ์์ฑ ์ฝ๋ -> executeSQL(ํ ์ด๋ธ๋ช )
- abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)
: ๊ตฌ๋ฒ์ db์ ์ ๋ฒ์ db์ ๋น๊ต ํ ์ ๋ฐ์ดํธ
- void onOpen (SQLiteDatabase db)
: ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ ์ดํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ ธ์ ๋ ํธ์ถ
2. Content Provider (์ฑ๊ณผ ์ฑ ์ ์ฅ์ ์ฌ์ด์์ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ฝ๊ฒ ํ๋๋ก ๊ด๋ฆฌํด์ฃผ๋ ํด๋์ค)
- String์ผ๋ก Schema์ Authority์ค์ , Uri๋ก path์ค์
- UriMatcher๋ก contentProvider๋ก ๋ค์ด์ฌ ์์ฒญ๋ค์ ๋ฏธ๋ฆฌ ์ ์ํด์ addURI()
- content Uri ์ค๊ณ : https://developer.android.com/guide/topics/providers/content-provider-creating?hl=ko#ContentURI
uriMatcher.addURI(authority, path, constant) | |
authority | content provider ์ค ์ด๋ authority์ ํด๋นํ๋ ์ง ๊ตฌ๋ถํ ๋ ์ฌ์ฉํ๋ ํ๊ทธ |
path | authority ์ค ํด๋นํ๋ path |
constant (=code) | match() ๋ฉ์๋ ์ฌ์ฉ ์ ์ผ์นํ๋ฉด ๋ฐํ๋๋ ์ ์ |
Content provider com.example.app.provider๋ผ๋ ๊ถํ์ด ์์ |
content๊ฐ ํ์ํ ๊ณณ content://com.example.app.provider/table์ด๋ผ๋ content uri๋ฅผ ๊ฐ์ง |
- content provider๋ ๊ท์น์ ๋ฐ๋ผ uri ๋งจ๋์ ํ์ ๋ํ ID๊ฐ์ด ํฌํจ๋ content uri๋ฅผ ํ์ฉํ์ฌ ํ ์ด๋ธ์ ๋จ์ผ ํ์ ๋ํ ์์ธ์ค๋ฅผ ์ ๊ณต
์ฑ์ด ์ ๊ณต์์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ณ , cursorAdapter๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ก ๋์จ cursor๋ฅผ listview์ ํ์ํจ
Content Provider Methods
- onCreate()
: dbhelper ์ ์ธ
- insert (Uri uri, ContentValues values) // pour Writable
: ๊ณ์ ์ฐ๊ธฐ ์ํด final๋ก SQLiteDatabase๋ฅผ ๊ฐ์ ธ์ค๊ณ db์ ์ ๊ทผํ์ฌ ์ ๋ณด insert
- query (Uri, uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) // pour Readable
: ๊ณ์ ์ฐ๊ธฐ ์ํด final๋ก SQLiteDatabase๋ฅผ ๊ฐ์ ธ์ค๊ณ , Cursor๋ฅผ ๋ฆฌํด๋ฐ์ ๋ณใ ์๋ก ์ ์ธ
*query๋ ์ฝ์ด์ค๊ธฐ ์์ ์ด๊ณ ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ background thread๋ asynctask์์ ์ฐ๋ ๊ฒ ์ข์
3. Content Resolver (Content Provider์ ์ฃผ์๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํด์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ด)
Methode
- query (uri, projection, selection, selectionArgs, sortOrder)
> uri : content://schema ๋ฐฉ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ์ฃผ์
> projection : ๊ฐ์ ธ์ฌ column ์ด๋ฆ ๋ชฉ๋ก, null์ด๋ฉด ๋ชจ๋ column
> selection : where์ ์ ํด๋นํ๋ ๋ด์ฉ
> selectionArgs : selection์์ ?๋ก ํ์ํ ๊ณณ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ
> sortOrder : ์ ๋ ฌ์ ์ํ order by ๊ตฌ๋ฌธ
>>> sql๋ฌธํ๊ณ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ์ปค์๋ฅผ ์ด์ฉํ์ฌ ์ฐพ์
ex) Cursor cursor = getContentResolver().query( ~~~ )
์ฐธ๊ณ ์ฌ์ดํธ
developer.android.com/guide/topics/providers/content-provider-creating
blog.yena.io/studynote/2017/11/11/Android-Content-Provider.html
'๐ป Computer > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋๋ก์ด๋ ์คํ๋์ค Github Push Partially failed (0) | 2020.10.04 |
---|---|
Android ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (1) | 2020.08.07 |
RecyclerView Click Event ์ฒ๋ฆฌ ๋ฐฉ๋ฒ 2๊ฐ์ง (0) | 2020.07.25 |
Type androidx.activity.R is defined multiple times (0) | 2020.07.23 |
Intent์์ Context (0) | 2020.07.23 |