2013-05-16 4 views
1

을 처음부터 다시 데이터베이스를 만들 방지합니다. 그러나 응용 프로그램을 닫고 다시 실행하면 처음부터 다시 데이터베이스가 만들어집니다. 그래서, 내 데이터가 삭제됩니다. 이것을 방지하는 방법? 어떻게해야합니까?어떻게이 같은 데이터베이스를 만든

+1

수퍼 클래스 인'SQLiteOpenHelper' 생성자에 전달하는 것은 무엇입니까? – laalto

+0

'version' 번호는 1 –

+0

입니다. "데이터베이스를 에뮬레이터에 밀어 넣었습니다."- 그래서 몇 가지 도구를 사용하여 db를 편집하고 있습니까? [PRAGMA user_version] (http://www.sqlite.org/pragma.html#pragma_schema_version) 값이 동일하게 유지되는지 확인하십시오 (해당 버전 번호). – laalto

답변

1

댓글을 명확히하면 다른 SQLite 데이터베이스 관리자에서 데이터베이스를 편집 할 때 user_version 숫자가 덮어 쓰여집니다. Android는이 필드를 사용하여 SQLiteOpenHelper 생성자에 전달 된 version 번호를 저장하고 onUpgrade() 또는 onDowngrade()을 사용하여 다른 버전에서 데이터베이스를 업그레이드 할 때이 필드를 사용합니다. 기본적으로 버전은 0이므로 버전 1 SQLiteOpenHelper을 사용하는 경우 버전 0에서 1로 업그레이드가 이루어 지므로 데이터가 손상 될 수 있습니다. 이 문제를 완화하기

어떤 방법 :

  1. 만 만들고 안드로이드 헬퍼 클래스를 사용하여 편집 SQLite는 데이터베이스.

  2. 비파괴적인 onUpgrade()을 구현합니다. 즉, 테이블을 삭제하지 않는 테이블은 필요한 테이블 만 있는지 확인하고 필요한 경우 이전 테이블의 데이터를 이전합니다.

  3. 외부 데이터베이스 관리자를 사용하는 경우 데이터베이스 버전이 n이되도록 PRAGMA user_version=n; SQL 명령을 실행하십시오. (죄송합니다. 모질라의 도구를 사용하지 않았고 거기서 가능한지 알 수 없습니다.)

+0

문제가 해결되었습니다. 걱정스러운 점이 있습니다. –

관련 문제