안녕하세요 안드로이드를 개발하는 초짜 연구원입니다.
다름이 아니오라 SQLite 관련되서 궁금한 사항이 있어서 문의를 드립니다.
제가 원하는 작업은 version이 업그레이드 될 때 기존 db를 지우고 새로 만들려고 했더니
소스상에서 알수 없는 문법들로 인해 제대로 처리가 되고 있는건지 분간이 안됩니다.
private static final int DATABASE_VERSION = 5 << 16;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < (5 << 16 | 6)) {
Log.d(TAG, "Upgrading form version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_NAME);
onCreate(db);
db.execSQL("ALTER TABLE " + CARRIERS_TABLE +
" ADD COLUMN authtype INTEGER DEFAULT -1;");
oldVersion = 5 << 16 | 6;
}
}
추가하 부분은 위에 검은글씨의 2줄인데, 해당하는 if 가 정상적으로 newVersion이 되었을 때 타는 구문인지 궁금합니다.




글쎄요 저건 본인이 더 잘아셔야 하는 부분이 아닌가 싶은데요....
버전 숫자 관리하는 방법까지 다른사람이 더 잘알면 문제가 있다는 생각이...
일단 저거는 보아하니 상위 16비트를 major 버전, 하위 16비트를 minor 버전으로 나눈거 같군요.
oldVersion은 기존에 설치된 버전인데 이것이 5.6 보다 작으면 업데이트를 합니다.
우선 버전이 신버전이면 (oldVersion보다 newVersion이 크면)무조건 onUpgrade는 실행을 합니다.
그러나 여기서는 if문에 의해서 5.6 아래만 DB테이블을 업그레이드 합니다.
아마 버전 Number에 대해서 제대로 관리하고만 있다면 크게 문제 없는 구문으로 보여집니다.