반응형
안드로이드 DB 컬럼 추가 (Upgrade) 방법
How to upgrade database version with adding new columns in android
brownsoo.medium.com
참고 링크.
DB column을 업데이트 하고 나서 코드 실행시 기존 코드에서는 테이블이 업그레이드 되지 않아서 SQL오류가 발생했었다. 그래서 항상 앱을 지우고 다시 깔아야했었는데, 이 과정에서 중요한 데이터들이 날라갔었다.
이를 방지하려면 onUpgrade함수에서 코드를 작성해주면 된다.
1. 버전을 올린다.
private static final int DATABASE_VERSION = 2;
사용하고 있는 DBHelper에서 버전을 올린다.
2. 기존 table에 변경하고 싶은 내용을 추가한다.
예시는 위에 링크를 참조 하라.
3. onUpgrade에서 sql문을 추가한다.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "onUpgrade()");
db.beginTransaction();
try {
// 추후에 버전 추가시 이런 식으로 작성
if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + DBName.EXAMPLE_TABLE_NAME + " ADD COLUMN example_column_name TEXT DEFAULT (NULL)");
}
Log.d(TAG, newVersion + " 버전 DB 업그레이드 성공");
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e(TAG, "DB 업그레이드 실패");
} finally {
db.endTransaction();
}
}
주의) downGrade안됨. column 삭제 시,
테이블 전체 create를 하고 복사하는 방식만 가능하기 때문에
신중하게 업그레이드 할 것.
반응형
'Android' 카테고리의 다른 글
[Android] 화면 고정, locale 고정 attachBaseContext(Context newBase) (0) | 2024.11.29 |
---|---|
[Android] webView (0) | 2024.11.28 |
[Android] Android SharedPreference 사용하기 (feat. Kotlin) (0) | 2024.11.18 |
[Android] 다중언어 설정 (feat. Java) (0) | 2024.11.11 |
[Android] SearchView 초성 검색(feat. Java) (0) | 2024.10.29 |