2013-02-04 6 views
6

sqlite 데이터베이스를 사용하는 앱을 수행하고 있습니다. 내 앱에 '데이터베이스 업데이트'버튼이있는 기능이 있습니다.기존 sqlite 데이터베이스 파일을 android의 새 데이터베이스 파일로 바꾸는 방법

사용자가 '데이터베이스 업데이트'버튼을 클릭하면 URL에서 새 db 파일로 이전 db 파일을 업그레이드해야합니다.

수행 방법. 연구에 따르면 데이터베이스가 .apk 파일로 바뀌면서 데이터베이스를 변경할 수 없다고합니다. 이에 대한 해결책이 있습니까? 도와주세요. 감사합니다.

+0

http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

답변

0

응용 프로그램을 처음 시작하면 apk 파일에서 데이터베이스를 외부/내부 저장소로 복사해야합니다. (명령문을 사용하거나 전체 db를 대체하여) 업데이트해야하는 경우 문제없이 내부/외부 메모리에서 작동 할 수 있습니다. 응용 프로그램을 업데이트하면 (새 응용 프로그램 내부에 새 db가있을 수 있음) 새 응용 프로그램을 처음 시작할 때 내부/외부 메모리에 저장된 db를 대체해야합니다.

3

은 단순히 당신이 다운로드 관리자를 사용하여 URL에서 DB 파일을 다운로드하고 그것은 자동으로 update.I이 사용하고있는 것입니다

  /data/data/<YOUR PACKAGE NAME>/databases/ 

이 경로에 파일을 복사 작동 할 수

+0

안녕 ... 난이 붙어 있어요 같은 문제 .. dis에 대한 코드 스 니펫 ??? – ryderz8

+1

그는 데이터를 응용 프로그램의 디렉토리에 직접 복사한다고 말합니다. 앱의 foo.db 파일은 위의 디렉토리 패턴에 있습니다. 그러나 내 경우에는 뿌리가있는 장치가 없으므로 databse 폴더에 액세스 할 수 없습니다. 당신은 새로운 것을 만들 수 있습니다. 나는 간단한 IO로 다른 문제를 해결했다. – StarWind0

+0

거기에 " .db-journal"파일이 있으면 제거해야합니까? –

3
private void importDatabase(String inputFileName) throws IOException 
{ 
    InputStream mInput = new FileInputStream(inputFileName); 
    String outFileName = YOUR_DB_PATH_HERE; 
    OutputStream mOutput = new FileOutputStream(outFileName); 
    byte[] mBuffer = new byte[1024]; 
    int mLength; 
    while ((mLength = mInput.read(mBuffer))>0) 
    { 
     mOutput.write(mBuffer, 0, mLength); 
    } 
    mOutput.flush(); 
    mOutput.close(); 
    mInput.close(); 
} 

편집 :

당신은 도움이 될 수 있습니다 :

How to use an existing database with an Android application

+0

매력처럼 작동했습니다! 다른 사람을위한 참고 사항. 나는 똑같은 코드로 복원을 허용했다. 결국이 파일을 간단하게 복사합니다. – StarWind0

관련 문제