2015-02-17 3 views
0

Это первый раз, когда мне нужно изменить структуру базы данных моего приложения (которое уже было опубликовано в игре Google). Это мой класс базы данных:Как обновить базу данных на устройстве пользователя?

public class Database extends SQLiteOpenHelper { 
    private static final String DB_NAME = "db"; 
    private static final int DB_VERSION = 1; 

    public Database(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String table = "CREATE TABLE users("; 
     table += "_id TEXT PRIMARY KEY,"; 
     table += "name TEXT NOT NULL,"; 
     table += "surname TEXT NOT NULL,"; 
     table += "details TEXT);"; 

     String table2 = "CREATE TABLE favorite("; 
     table2 += "id TEXT PRIMARY KEY);"; 

     String table3 = "CREATE TABLE documents("; 
     table3 += "id TEXT PRIMARY KEY,"; 
     table3 += "text TEXT NOT NULL,"; 
     table3 += "username TEXT REFERENCES users(_id));"; 

     String table4 = "CREATE TABLE average("; 
     table4 += "user TEXT PRIMARY KEY,"; 
     table4 += "document INTEGER NOT NULL,"; 
     table4 += "avg REAL NOT NULL);"; 

     db.execSQL(table); 
     db.execSQL(table2); 
     db.execSQL(table3); 
     db.execSQL(table4); 
    } 

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

Я добавил следующую таблицу:

String table5 = "CREATE TABLE categories("; 
table5 += "source TEXT PRIMARY KEY,"; 
table5 += "parent TEXT,"; 
table5 += "sub TEXT NOT NULL);"; 

, а затем добавить это:

db.execSQL(table5); 

Итак, что же я, чтобы добавить в onUpgrade метод, чтобы пользователи имели обновленную базу данных на своем устройстве? Извините, если это может быть глупый вопрос, но я не уверен, что смогу это сделать, и я хочу чувствовать себя уверенно в том, чтобы заставить пользователей получить нужную структуру в новой версии приложения.

ответ

0

onUpgrade() вызывается, когда база данных завершается, а номер версии меньше запрошенного в конструкторе. Метод обновит схему таблицы до требуемой версии.

Вы найдете более подробную информацию здесь: «When is SQLiteOpenHelper onCreate()/onUpgrade() run?»

+0

Я вижу, так что же я должен делать? Я просто пишу table5 в методе onUpgrade? – smartmouse

Смежные вопросы