안드로이드 개발 질문/답변
(글 수 45,052)
어플에 사용하는 DB파일이 용량이 좀커서
assets 폴더에(1M까지밖에 안되는관계로)
FileName1.db
FileName2.db
FileName3.db
FileName4.db
...
이런식으로 되어있습니다.
현재는 어플이 설치되고 Main Activity에서
/data/data/packageName/databases/FileName.db
가 존재하지않으면 합쳐서 하나의 db파일로 만들고 기동 되는 식으로 짰거등요.
여러 책이나 강좌에서 보면 약간모양은 다르겠지만...대충
private static class OpenHelper extends SQLiteOpenHelper{
public OpenHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db){
//db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//db.execSQL("DROP TABLE IF EXISTS BOOKLIST");
//onCreate(db);
}
}
대부분 이런 핼퍼 클래스에서 onCreate에서 DB를 생성하지만
아까처럼 Activity에서 기동시에 합쳐지는DB를 만드는 저로써는
2가지 고민 사항이 있습니다.
1) 우선 설치시에 Main Activity에서
/data/data/packageName/databases/FileName.db
의 파일을 검사하고 File을 만드는게 정석인지
아니면 위와같은 Helper Class의 onCreate에서 파일을 복사해서 합치는걸 만드는게 정석인지?
2) 버전이 업데이트 되서 앱이 배포될때에는
onUpgrade함수에서 해야될텐데
기존 디비는 벌써 아래 위치에 설치된상태일테구요
/data/data/packageName/databases/FileName.db
새로 버전업한앱의 asset에는 분할된 새버전으 db파일이 있을테니
helper의 onUpgrade에서 기존 db를 어딘가 백업하고
asset의 db파일을 다시 복사해놓고
백업한 db의 내용을 다시 갱신해야될지?
이부분은 업무로직을 아직 정하지 못했습니다.
-----------------------------------------------------------
학습어플인데
db파일에 학습내용이 잇구요 이부분은 계속적으로 추가되서 갱신 배포되는거구요
db파일에는 사용자의 학습패턴 및 내용이 저장됩니다.
즉, 추가된 학습내용은 계속적으로 업그레이드시에 반영되야될꺼구요
사용자의 학습패턴역시 그대로 저장되어야해서...
db를 따로만들기도 join이있어서...
이런식의 db파일이 커서 asset같은데 넣으신분들은..어떤식으로 유지관리를 하는지 궁금하네요.




이런 좋은 질문에 답글이 없네요 ㅠㅠ엉엉