在上传到android中的playstore之前管理数据库

时间:2013-07-12 05:09:02

标签: android database sqlite

几个星期前我已经上传了一个应用程序到商店。此应用程序涉及sqlite数据库,该数据库存储有关用户名,密码以及用户在本地使用应用程序时给出的其他详细信息的信息。

现在我有几个表和字段添加到数据库中并想将应用程序上传到Playstore作为更新?

我担心的是,如果用户从playstore更新应用程序 - 更新后 - 存储在数据库中的所有数据都将被保存,或者用户是否必须从头开始重新创建所有内容?

让我知道!

谢谢!

2 个答案:

答案 0 :(得分:7)

您必须覆盖SQLiteOpenHelper的onUpgade方法。在OnUpgrade方法中,您可以删除数据(drop sqlite命令)或使用其他列维护数据(alter sqlite命令)或创建新表(create sqlite命令)。

请参阅以下摘录。

我假设你的版本是1.(Plz检查你的SqliteOpenHelper类的构造函数)

将版本增加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,否则请保持不变。

答案 1 :(得分:1)

这不是自动完成的。在SQLiteOpenHelper中,您需要递增Schema整数。这将触发现有用户的升级方法。

添加表不是问题,只需在onUpgrade中执行此操作,不会中断。

但是要添加字段,您应该使用'ALTER TABLE'SQL命令

  

如果添加新列,可以使用ALTER TABLE将它们插入到实时表中。如果重命名或删除列,可以使用ALTER TABLE重命名旧表,然后创建新表,然后使用旧选项卡的内容填充新表

参见官方参考here