public void createDataBase() throws IOException {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.NO_LOCALIZED_COLLATORS);
} catch (SQLiteException e) {
}
if(checkDB != null) {
checkDB.close();
}
boolean dbExist = checkDB != null ? true : false;
if(dbExist) {
} else {
this.getReadableDatabase();
try {
InputStream myInput = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while((length = myInput.read(buffer)) > 0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
} catch(IOException e) {
throw new Error("Error copying database");
}
}
}
이와같이 기기에 DB가 깔려있지않은경우만 디비를 복사하게 코딩해서 사용하고있는데요
제가 DB내용을 업데이트 하게되면 그땐 또 새롭게 깔게 하고싶은데...
어떻게 하는지 몰라서 매번 DB업데이트시마다 기기(또는 AVD) 깔린 어플을 지우고 다시 까는 번거로움이 있내요 ㅜㅜ
DB가 업데이트 됫는지 확인하는 방법이 있나요??
보통 DB 쓸때는 먼저 SQLiteOpenHelper를 상속받은 DBHelper 클래스를 만들고 여기서 정의를 할껍니다..
헬퍼클래스 만들고 onCreate부분에 에셋에서 DB복사하는거 구현해두시구요..
핼퍼클래스 생성자 부분에 보시면 버전 인자가 있습니다.
추후 DB 테이블같이 수정할게 생기면 버전 인자를 이전과 다른 값으로 넘기시고
onUpgrade 메서드에서 수정되는 내용 적용하시면 되지 않을까 싶습니다.