티스토리 뷰
SQLite 에서 ROOM 까지 (5) - SQLite 로 생성된 기존 DB 에 column 추가하기
parkho79 2020. 8. 20. 09:24이번 포스팅에서는 SQLite 로 생성된 기존의 DB 에 column 을 새로 추가하는 방법에 대해 알아보려 한다.
기존 DB 에 column 을 추가하기 위해서는 DB version 을 upgrade 해야한다.
SQLiteOpenHelper 는 DB 를 open 할 때 기존 DB version 보다 현재 DB version 이 크다면 onUpgrade() 를 호출한다.
호출된 onUpgrade 함수에 신규 column 을 추가하면 된다.
참고로, 지난 포스팅에서는 UI, DB 생성, CRUD 을 알아 보았다.
[Android/Database] - SQLite 에서 ROOM 까지 (2) - UI 구성
[Android/Database] - SQLite 에서 ROOM 까지 (3) - SQLiteOpenHelper
[Android/Database] - SQLite 에서 ROOM 까지 (4) - SQLite 를 이용한 CRUD
DB table
하단은 예제에 사용한 DB table 이다.
노란색 배경의 나이 column 을 신규로 삽입할 것이다.
Field | Type | Property |
ID (StudentEntry._ID) |
INTEGER | primary key auto increment |
학년 (StudentEntry.GRADE) |
INTEGER | |
학번 (StudentEntry.NUMBER) |
INTEGER | |
이름 (StudentEntry.NAME) |
TEXT | |
나이 (StudentEntry.AGE) |
INTEGER |
◼ DB version upgrade
기존 DB 에 column 을 추가하고 이를 반영하기 위해서는 DB version 을 upgrade 해야한다.
◼ DB 생성 시 column 추가
신규로 app 실행 시 에서도 age column 이 추가되야 하므로 DB 생성 할 때도 column 을 추가하자.
onUpgade 처리
위에서 설명한 것 처럼 SQLiteOpenHelper 는 DB 를 open 할 때 기존 DB version 보다 현재 DB version 이 크다면 onUpgrade() 를 호출한다.
해당 함수에서 처리하는 방식은 아래와 같이 두가지로 나눌 수 있다.
◼ 기존 data 를 버리고 신규 생성
Offline DB 를 cache 용도로 쓰고 실제 데이터는 online 에서 가져 오는 경우는 하단과 같이 기존 table 을 삭제 후 신규 테이블을 생성하면 된다.
◼ 기존 data 유지하기
기존 DB 를 유지해야 하는 경우는 해당 version 에 맞춰 필요한 column 을 추가한다.
Source code
https://github.com/parkho79/FromSQLiteToRoom_2
'Android > Database' 카테고리의 다른 글
SQLite 에서 ROOM 까지 (7) - ROOM 이란? (0) | 2020.09.01 |
---|---|
SQLite 에서 ROOM 까지 (6) - DB 확인하기 (0) | 2020.08.25 |
SQLite 에서 ROOM 까지 (4) - SQLite 를 이용한 CRUD (0) | 2020.08.14 |
SQLite 에서 ROOM 까지 (3) - SQLiteOpenHelper 를 이용한 DB 생성 (0) | 2020.08.11 |
SQLite 에서 ROOM 까지 (2) - UI 구성 (0) | 2020.08.07 |
- Total
- Today
- Yesterday
- 무료채굴
- 채굴앱
- 안드로이드 인텐트
- onCreateContextMenu
- StringUtils
- bindservice
- 리워드 어플
- RoomDatabase
- notifyDataSetChanged
- onContextItemSelected
- mPANDO
- task 생성
- Android Service
- StartService
- android flag activity
- M2E
- android intent
- task
- 안드로이드 서비스
- 무료 채굴
- Intent
- 리워드앱
- 앱테크
- registerForContextMenu
- android task
- android activity flag
- WEMIX
- BroadcastReceiver
- 앱테크 추천
- p2e
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |