티스토리 뷰

300x250
300x250



이번 포스팅에서는 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



728x90
댓글