주의할 사항:

  1. 반드시 DB파일 복사 후 직접 DB 버전을 세로운 버전으로 셋팅해주어야 한다.
  2. onCreate() 또는 onUpgrade() 내부에서는 다음의 코드를 실행시키면 기존 DB Connection이 여전히 살아있어 기존의 Database file을 삭제할 수 없는 문제가 발생하므로 가급적 onCreate()나 onUpgrade() 내에서 다음의 함수를 호출하는 건 피한다.


private void replaceDatabase() {
	// DELETE EXISTING DATABASE FILE
	if (mContext.deleteDatabase(DBNAME) == true)
		Log.i("SQL", "COMPLETE: DELETE DATABASE");
	
	// COPY DATABASE FILE FROM ASSETS INTO DEVICE
	AssetManager manager = mContext.getAssets();
	File dbFile = new File(DBPATH + DBNAME);
	
	try {
		InputStream is = manager.open(DBNAME);
		BufferedInputStream bis = new BufferedInputStream(is);
		
		// IF THERE EXISTS NO SUCH DIRECTORY(FILE), CREATE NEW ONE.
		if (dbFile.exists() == false) dbFile.createNewFile();
		
		// COPY CONTENTS OF DATABASE FILE
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dbFile));
		int length = -1;
		byte[] buffer = new byte[1024];
		while ((length = bis.read(buffer, 0, 1024)) != -1) {
			bos.write(buffer, 0, length);
		}
		
		bos.flush();
		bos.close();
		bis.close();
	} catch (IOException e) {
	}
	
	// SET NEW DATABASE VERSION
	SQLiteDatabase db = SQLiteDatabase.openDatabase(DBPATH + DBNAME, null, SQLiteDatabase.OPEN_READWRITE);
	db.setVersion(DBVERSION);
	db.close();
}



.