Android

[Android] 앱 삭제 없이 SQLite DB 업데이트 (feat. Java)

김한토 2024. 11. 19. 15:14
반응형

https://brownsoo.medium.com/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-db-%EC%BB%AC%EB%9F%BC-%EC%B6%94%EA%B0%80-upgrade-%EB%B0%A9%EB%B2%95-68e9b21cc95

 

안드로이드 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를 하고 복사하는 방식만 가능하기 때문에 

신중하게 업그레이드 할 것.

반응형