2011-10-15 2 views
0

나는 자산 폴더에 sqlite 데이터베이스로 구성된 안드로이드 응용 프로그램입니다. DB에는 사용자 데이터 (사용자가이 테이블이 비어있는 응용 프로그램을 설치할 때 응용 프로그램을 사용하여 시간이 지남에 따라 업데이트 됨) 중 하나 인 여러 테이블이 있습니다. 다른 테이블에는 내가 업데이트 한 데이터가 저장됩니다.응용 프로그램 업데이트에 안드로이드 sqlite

질문 : 사용자가 시장에서 자산의 sqlite 데이터베이스를 사용하여 업데이트 된 버전의 응용 프로그램을 가져 오면 응용 프로그램을 사용하여 사용자가 업데이트 한 데이터를 유지해야하지만 다른 테이블 (내 데이터로 구성)을 업데이트하십시오.

올바른 방법은 무엇입니까?

감사합니다 :)

답변

0

각 변경 버전 번호를 유지하고 가능한 조합에 대한 onUpgrade 메소드를 구현합니다. javadoc for SQLiteOpenHelper

+0

새 APK에있는 DB의 데이터를 이전 응용 프로그램 버전에 이미 존재하는 데이터로 복사하려면 어떻게해야합니까? –

+1

당신은 몰라요. 당신은 새로운 스키마로 업데이트 할뿐만 아니라 이전 데이터베이스에 데이터를 삽입하기 위해 SQL 문을 작성합니다. –

+0

올바르게 이해하고 있는지 확인하기 위해 테이블에 5,000 개의 행이 있다고 말하면 코드에 5,000 개의 insert 문을 넣어야합니다. onUpgrade 이벤트에서 실행됩니까? –

0

데이터베이스를 처음 만들 때 테이블이 비어 있다고 했으므로 /assets - 폴더의 데이터베이스를 추가 할 필요가 없습니다.

SQLiteOpenHelper 대신 초기 테이블을 만들 수있는 onCreate()- 방법을 제공합니다 (필요한 경우 예제 데이터 추가).

다음 응용 프로그램을 업데이트하면 데이터베이스 버전이 증가하고 onUpgrade() 메서드가 호출되어 데이터베이스 업데이트를 수행 할 수 있습니다.

이 다른 질문을 참조하십시오 : 다음 데이터베이스가 이미 존재하는 경우 앱이 거대한 데이터베이스와 함께 제공하고 SQLiteOpenHelper에서 항목의 삽입하면 갈 수있는 올바른 방법이 아닌 경우 Run some code when user update my app

을, 당신은 여전히 ​​확인할 수 있습니다 및 수행 (onUpgrade()- 방법을 통해) 업데이트하고 사용자 데이터를 유지하십시오.

+0

사용자의 데이터는 비어 있지만 다른 테이블은 응용 프로그램이 처음 설치 될 때 이미 데이터로 구성됩니다. 그 응용 프로그램의 새 버전이 설치되면 그 데이터를 대체하고 싶습니다. –

+0

많은 업데이트가 하나의 업데이트에서 변경 되었습니까? 당신은 단지 몇개의 레벨을 추가합니까, 아니면'.db' 파일을 대체 할 필요가 있습니까? –

관련 문제