2013-07-12 2 views
2

나는 몇 주 전에 상점을 재생할 응용 프로그램을 업로드했습니다. 이 응용 프로그램은 사용자 이름, 암호, 응용 프로그램을 로컬에서 사용하는 동안 사용자가 제공하는 기타 세부 정보를 저장하는 sqlite 데이터베이스를 포함합니다.android에서 playstore에 업로드하기 전에 DB를 관리하십시오.

이제 더 많은 테이블과 필드가 데이터베이스에 추가되었고 업데이트로 playstore에 응용 프로그램을 업로드하고 싶습니다.

사용자가 플레이 스토어에서 응용 프로그램을 업데이트하는 경우 걱정됩니다 - 업데이트 후 - 데이터베이스에 저장된 모든 데이터가 저장되거나 사용자가 모든 것을 처음부터 다시 만들어야합니까?

알려주세요.

감사합니다.

답변

7

SQLiteOpenHelper의 onUpgade 메서드를 재정의해야합니다. OnUpgrade 메서드에서 데이터 삭제 (sqlite 명령 삭제) 또는 추가 열로 데이터 유지 관리 (sqlite 명령 변경) 또는 새 테이블 만들기 (sqlite 명령 작성) 중 하나를 수행 할 수 있습니다.

다음 스 니펫을 참조하십시오.

나는 (PLZ 당신의 SqliteOpenHelper 클래스의 생성자를 확인) 버전 1. 것이다 가정

증가 이제 1

class DatabaseHelper extends SqliteOplenHelper{ 

     private static final int DATABASE_VERSION = 2; //new version of the database 
     private static final int Database_name = "MyDatabase"; 
     private static final String alterUserName = "alter table users add name text"; 
     private static final String table_users = "create table if not exists " 
      + users + "(" + "_id integer primary key autoincrement," 
      + "email text" + ")"; 

     public DatabaseHelper(Context context) { 
     super(context, Database_name, null, DATABASE_VERSION); 
     cntxt = context; 
    } 

     @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     db.execSQL(table_users); 
     db.execSQL(alterUserName); 

    } 
} 

로 버전마다 당신은 데이터베이스 변경으로 다음 업데이트를 롤백 할 때 데이터베이스 버전을 1 씩 늘리십시오. 그렇지 않으면 그대로 유지하십시오.

+0

응용 프로그램을 업그레이드하면 강제 종료됩니다. 나는 깨끗한 설치 작업을했다. 내가 말한대로 Aditya를 언급해야 할 것처럼 보입니다. 그것을 밖으로 시도하고 돌아 가자! – TheDevMan

+0

내가 설정할 때 강제로 닫습니다 : db.execSQL (Table_Users); "Table_Users"근처에 (1) : (코드 1) : 컴파일 중 : UsersTable – TheDevMan

+0

@TheDevMan 도움이 되었다면 대답을 수락하십시오. –

1

이것은 자동으로 수행되지 않습니다. SQLiteOpenHelper에서 스키마 정수를 증가시켜야합니다. 이렇게하면 기존 사용자의 업그레이드 방법이 실행됩니다.

테이블을 추가해도 문제가되지 않으며 onUpgrade에서 아무 것도 실행하지 않습니다.

그러나 당신이 살아있는 테이블에 삽입하는 ALTER 테이블을 사용하여 새 열을 추가하는 경우에는 'TABLE을 ALTER'SQL 명령

를 사용해야합니다, 필드를 추가 할 수 있습니다. 이름을 바꾸거나 열을 제거하면 공식 참조를 참조하십시오 다음 새 테이블을 만들고, 이전 테이블의 이름을 변경하는 ALTER 테이블을 사용하여 다음 이전 탭

의 내용으로 새 테이블을 채울 수 있습니다 here

관련 문제